当前位置:  开发笔记 > 编程语言 > 正文

如何实现顶级异常处理?

如何解决《如何实现顶级异常处理?》经验,为你挑选了1个好方法。

我最近不得不为同事开发的现有服务开发一个额外的模块.他在主要工作函数中放置了一个try/catch块,用于捕获冒泡到这个级别的所有未处理异常,将它们与堆栈跟踪信息一起记录下来:

try
{
    // do main work
}
catch(Exception ex)
{
    // log exception info
}

虽然这使程序非常稳定(如'不太可能崩溃'),但我讨厌它,因为当我测试我的代码时,我没有看到由它引起的异常.当然,我可以查看异常日志并查看是否有新条目,但我非常喜欢在抛出异常时获得异常的直接反馈(请将光标放在代码的右侧).

我至少在编码和测试的时候删除了这个顶级的try/catch.但是现在我的任务已经完成,我必须决定是否将其重新用于发布,或者不是.我认为我应该这样做,因为它使服务更稳定,而且它的全部意义在于它在后台运行而无需任何监督.另一方面,我已经读过一个应该只调用特定的异常(如IoException),而不是一般Exception.

你对这个问题有什么建议?

顺便说一句,该项目是用C#编写的,但我也对非.NET语言的答案感兴趣.



1> OscarRyz..:

把它放回去.

该例外应仅在测试时相关.否则它没有意义弹出给用户.

记录很好.

您还可以使用Visual Studio定义的DEBUG符号将调试版本作为标志.

    ...
    } catch( Exception e ) { 
#if DEBUG
          throw;
#else
          log as usual 
#endif
    }

因此,下次需要修改时,调试标志应设置为true,并弹出异常.

推荐阅读
臭小子
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有