1

我有一个执行一些 SQL 命令的函数,我创建了一个记录器,我在文件中写入了执行的命令和受影响的行数,但我还需要写下可能引发的命令一个OracleException,所以我完成了这段代码:

public string ExecuteCommand(List<string> comandos)
        {
            var excepção = string.Empty;
            var executar = new OracleCommand
            {

                Connection = Updater.OraConnection,
                CommandType = CommandType.Text
            };

            try
            {
                Logg("Inicio da execução de comandos");
                foreach (var variable in comandos)
                {
                    excepção = variable;
                    executar.CommandText = variable;
                    throw new OracleException(0, "comando", "stuff", "adasds");
                  var Afectados =  executar.ExecuteNonQuery();
                    Logg(variable);
                    Logg("Linhas afectadas: " + Afectados);

                }

            }
            catch (OracleException)
            {
                Logg("Erros:");
                Logg(excepção);
                return excepção;

            }

            return excepção;


        }

我试图到处搜索,但找不到任何合适甚至有针对性的答案,所以我有点迷茫,为什么我不能像这样提出 oracleException :throw new OracleException(0, "comando", "stuff", "adasds");

它只是说由于其保护级别而无法在此处访问构造函数。任何帮助将不胜感激

4

2 回答 2

1

如果您只想模拟抛出的异常而不关心询问对象,那么。

private OracleResilienceManager CreateSut()
{
    return new OracleResilienceManager(_resilienceSettings);
}

throw System.Runtime.Serialization.CreateSafeUninitializedProtectedType<OracleException>();

就我而言,我正在测试重试策略,并希望在抛出此异常时测试重试逻辑。无需访问对象本身。

于 2018-02-16T13:01:53.417 回答
0
public class OracleException : Exception
{

}

该类需要将其范围设置为公共或内部。构造函数不能作为私有类访问。

于 2016-05-23T09:11:18.347 回答