Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何强制每个内部方法必须具有抛出_C# - Fatal编程技术网

C# 如何强制每个内部方法必须具有抛出

C# 如何强制每个内部方法必须具有抛出,c#,C#,强制每个内部方法必须具有throw或强制不使用try-catch块 下面的示例InsideMethod2()未执行throw在这种情况下,当调用Main()方法时,应该给出一些警告或错误消息,说明您必须throw或不应该使用trycatch块 例如: public void Main() { try { InsideMethod1(); InsideMethod2(); } catch (System.Exception)

强制每个内部方法必须具有throw或强制不使用try-catch块

下面的示例
InsideMethod2()
未执行
throw
在这种情况下,当调用
Main()
方法时,应该给出一些警告或错误消息,说明您必须
throw
或不应该使用
try
catch

例如:

public void Main()
{
    try
    {
        InsideMethod1();
        InsideMethod2();
    }
    catch (System.Exception)
    {
        throw;
    }
}

public int InsideMethod1()
{
    try
    {
        // implementation here
    }
    catch (System.Exception)
    {
        // log
        throw;
    }
}

public int InsideMethod2()
{
    // enforce throw or enforce not use try catch block
    int a = 1, b = 0, c = 0;
    try
    {
        c = a / b;
    }
    catch (System.Exception)
    {
        // enforce to throw
        // log
    }

    return c;
}

有可能实施内部方法吗?

没有,而且这并不是世界上最好的主意。无论如何,你应该捕获、抛出和记录你需要的东西,而不是所有东西。而且这会让你的日志文件很烦人。基本上这就是为什么我们有堆栈跟踪为什么你想要你的mtehod抛出?当您的方法能够自行处理错误时(例如
InsideMethod2
中的
DivideByZeroException
),则无需将其提供给客户端。相反,在你能处理的地方处理它(在你的特殊情况下,完全避免它)。这听起来很奇怪。你能详细说明你的实际目标是什么吗。看起来你有一些完全不同的任务要解决。是的,当然,就像我在处理三个数据库,它们在不同的服务器中,所以更新了DataBase1和DataBase2中的一些数据,其中在DataBase3中更新时出现了一些错误,所以我希望在抛出Main()时从DataBase1和DataBase2恢复method.DivideByZeroException只是想到了示例@HimBromBeere“所以当我想要从数据库1和数据库2恢复时,我将在抛出Main()方法时实现它”,我不理解这一点。您的db3有任何错误。但为什么其他两个要关心这个呢?所有这些数据库共享相同的数据吗?否则,很难想象人们会如何“从数据库中恢复”。