Muh*_*han 6 architecture exception-handling
我在几个地方读到,最好能够在callstack中捕获更高的异常,但是我还没能找到这个陈述的理由.
Scott Hanselman:请记住,Application_Error存在.尽可能高地捕获异常,而不是低.
我认为异常应该在可以处理的地方被捕获,高或低并不重要.这不是真的吗?如果不是那么为什么?
如果可能,请在答案中添加一个示例.
谢谢
您应该在代码中捕获异常,您可以在其中执行某些操作.通常,生成异常的代码无法处理问题,但调用该代码的方法或调用该代码的方法调用的方法可以优雅地处理问题.
假设您有一些尝试打开文件并读取某些数据的代码,如果该文件不存在,则会生成异常.在那个范围内的代码不能做多少但是保释,但调用堆栈的几个框架调用方法可能会说"哦,好吧,有一个例外.我会尝试这个备用文件"或"我猜那个文件没有"存在,所以我会继续创造一个新的."
这实际上是异常的一大好处:它们使开发人员不必立即处理所有可能的错误情况.您可以编写代码,期望它在大多数情况下都能正常工作,并且您的代码不需要因为大量错误处理而混乱.只要您宣传可能引发的异常,就可以使代码中的代码更高,以适合该代码尝试的方式解决问题.