c#中的异常处理

时间:2010-10-17 14:04:47

标签: c# exception-handling

我想知道最后阻塞仍然在异常处理中执行,即使try块没有匹配的catch块,如果没有,那么会发生什么? 此外,我想现在系统异常和应用程序的区别

2 个答案:

答案 0 :(得分:13)

是的,您根本不需要catch块。始终执行finally块。

至于System.ExceptionSystem.ApplicationException之间的区别:Exception是所有异常的基类;发生非致命应用程序错误时应使用ApplicationException。请参阅MSDN documentation

另见best practices for handling exceptions

答案 1 :(得分:4)

正如其他人提到的那样finally即使没有catch阻止也会运行。这支持Java的 try finally 模式(可以使用IDisposableusing实现)。

一个异常 (看我在那里做了什么?)是在抛出StackOverflowException的情况下finally阻止{{3}如果存在catch,也不会。{/ p>

finally块在try块完成后(干净地或通过抛出异常)运行,就像它在代码中的位置所期望的那样。