Gur*_*epS 16 .net c# exception-handling exception
很多时候,提到只捕获我可以处理的异常(抛出,包装和/或记录,或执行一些其他操作).
哪些例外无法处理?这是不应该被抓住的意思吗?我知道不应该捕获可能表示对象引用为null的异常,因为它们是编程错误而不是用户激发的.还有其他例子吗?另一个是ExecutionEngineException.
此外,catch块中的操作过程总是在rethrow,wrap/rethrow和log之间吗?是否有需要在catch块中执行某些其他操作的情况?
谢谢
Han*_*ant 16
通常的建议适用,只抓住你能处理的东西.框架内部有一个名为IsCriticalException的实用程序函数,它通常被框架代码的一部分用来决定是否吞下异常.不妨再去吧.它考虑以下关键:
这是一个很好的清单.
ano*_*non 13
我会使用Eric Lippert的建议,而不是捕获"致命"例外:
http://blogs.msdn.com/b/ericlippert/archive/2008/09/10/vexing-exceptions.aspx