C# 如何强制每个内部方法必须具有抛出
强制每个内部方法必须具有throw或强制不使用try-catch块 下面的示例C# 如何强制每个内部方法必须具有抛出,c#,C#,强制每个内部方法必须具有throw或强制不使用try-catch块 下面的示例InsideMethod2()未执行throw在这种情况下,当调用Main()方法时,应该给出一些警告或错误消息,说明您必须throw或不应该使用trycatch块 例如: public void Main() { try { InsideMethod1(); InsideMethod2(); } catch (System.Exception)
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有任何错误。但为什么其他两个要关心这个呢?所有这些数据库共享相同的数据吗?否则,很难想象人们会如何“从数据库中恢复”。