抓住所有异常的好坏?

pdi*_*ddy 14 .net exception-handling

我已经在多个项目中看到一种捕获所有异常以捕获所有意外异常,因此应用程序不会崩溃,我通常会看到:

AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(myUnexpectedExhandler);
Application.ThreadException += new System.Threading.ThreadExceptionEventHandler(threadExHandler);
Run Code Online (Sandbox Code Playgroud)

这是一个好的或坏的做法.

jam*_*kes 28

在项目的顶层捕获异常是正确的.在那里,你可以做一些事情,比如记录它,向你的团队报告细节等等.如果可能的话,应该在某个地方发布例外情况 - 这对开发坚如磐石的产品有很大帮助(参见Jeff Atwood的博客文章" Exception-Driven Development "对此进行了评论).

什么是不好的做法是在调用堆栈中不正确地捕获异常.你应该捕获异常的唯一时间是你何时知道如何处理它.当然,你永远不应该永远地默默地吞下异常.

  • +1这个`你唯一能抓到异常的时候就是你何时知道如何处理它 (6认同)

Kei*_*ith 5

总的来说,我会说这完全取决于你,但对我而言,它取决于给定项目当前处于什么阶段.在任何项目的初始开发期间,我更喜欢未捕获的异常,以显示带有什么代码行的良好描述性错误消息它轰炸了所以我可以解决它.

但是,一旦网站成熟,我就会使用我自己构建的自定义ErrorHandler类,并将所有错误记录到数据库表中,并且每小时(或每日)错误列表通过电子邮件发送给负责项目的开发人员.需要精细处理的特殊错误通常会在可能破坏的特定代码行周围进行try/catch.