Émi*_*mbe -1 c# exception-handling exception
我正在尝试使用最好的异常处理方法,我有点迷失了.
例如,如果我有4个方法(1个调用另一个调用另一个方法......).对于每个方法,可以抛出相同类型的自定义异常.
假设我在第4种方法中引发了错误.我需要在第3个中捕获它还是我可以在第一个中捕获它?
因为如果我尊重需要尽快捕获错误的原则,我应该将catch放在所有的第一种方法中,而不是只放在第一种方法中.
Method1()
{
Method2();
}
Method2()
{
Method3();
}
Method3()
{
Method4();
}
Method4()
{
//Some code that could throw a customException
}
Run Code Online (Sandbox Code Playgroud)
我正在尝试使用最好的异常处理方法,我有点迷失了.
编写健壮的软件很难.
如果我尊重错误需要尽快被捕获的原则
这是一个糟糕的原则.什么是可能有什么关系呢?您应该只编写可能代码的原则没有帮助.什么时间有什么关系呢?这是一个重言式,处理异常的正确位置是可以正确处理异常的地方 ; 无论是迟早还是晚些时候.
在哪里可以正确处理异常?这完全取决于(1)异常和(2)您打算如何处理它.这听起来像是非常无益的建议,但你的问题非常模糊!让我们将异常排除在外,只考虑计算.计算的最佳位置在哪里?更早或更晚进行计算是否更好?你怎么可能为所有可能的计算回答这个问题?
我只是想避免在我的所有方法中捕获相同类型的错误,所以我可以在我的大方法中添加一个catch?
好吧,让我们考虑一下.假设为了参数,每个方法处理异常是正确的.在什么情况下将异常处理移出每个被调用者并进入调用者是正确的?这很容易枚举:
那是你所处的情况吗?然后可以在不改变语义的情况下将处理程序移动到调用者中,从而减少重复的代码.
我想关闭我的应用程序,因此请记录错误并关闭我的应用程序
然后将处理程序尽可能靠近Main.
或者,处理"我正在卸载appdomain因为我得到了一个未处理的异常"事件并将你的处理逻辑放在那里.
我注意到,如果您的应用程序异常关闭,您无法保证您的日志记录系统不会爆炸,您可能会再次将其炸毁.小心!