在每个方法 block 中编写 try/catch 是相当烦人的。
除了AOP之外,还有什么方法可以避免这种情况并捕获所有异常吗?仅在全局错误处理程序级别捕获它们就足够了(例如在 ASP.NET 中)。
谢谢
请您参考如下方法:
我听过的关于这个主题的最好建议(实际上是在某个地方)是“只有在你要处理它时才捕获异常。”也就是说,只有当该方法具有处理异常的方法时,才在该方法中使用 catch block 才有意义。例如,如果该方法由于某种原因应该始终返回一个值,并且异常要么以静默方式记录,要么以某种方式在值中指示(例如附加到某些自定义 DTO 或其他内容的错误消息)。将异常在堆栈中向上冒泡并假设调用者将处理它并没有什么问题。
当然,这并不是说它根本不应该被处理。正如您所建议的,最后一道防线应该始终是应用程序的全局异常处理。所有失败都应该得到妥善处理,但更重要的是,它们应该仅由应该处理它们的类/方法来处理,在许多情况下,这不是引发异常的方法。例如,在数据网络应用程序的简单表单中,数据访问不一定需要处理异常。如果相关,它可以添加信息,但对于这样一个简单的应用程序,全局错误处理程序可以负责记录和显示错误消息。
还应该注意(我假设您在这里谈论的是 .NET),try block 不需要总是伴随着 catch block 。您可以try{}finally{}在异常发生后进行清理(例如优雅地关闭外部资源),而不必费心捕获异常,而是让它相应地冒泡。




