在ASP.NET中,我想知道您对处理异常的最佳方式有何看法。
- 您建议使用try/catch块吗?
- 最好在每个单独的代码/组件上使用try/catch块吗?或者在哪些情况下使用?
您绝不应将每个代码块都包装在try/catch块中。您只应在任何给定点上捕获实际可以处理的异常。所有其他异常都应允许传播。
异常的好处之一是您无需在本地处理每个错误。通过在各个地方使用try/catch,您实际上正在违反这个概念。
每当您有需要清理的资源(如连接)时,请使用try finally。但是,仅在您确实可以处理异常时才使用try catch。否则,让它沿着堆栈向上冒泡,并在global asax中捕获它,以便您可以优雅地失败。
抛出异常是了解应用程序出错位置的最佳方式。
顺便说一下,对于支持大型系统的开发人员来说,最烦人的事情是尝试弄清楚为什么某些东西没有崩溃但表现不正确,原因是有人在业务流程中捕获了错误并使代码静默。
try ... catch
块不会产生任何显著的性能开销;抛出异常才会。 - LukeH