我想知道最后阻塞仍然在异常处理中执行,即使try块没有匹配的catch块,如果没有,那么会发生什么? 此外,我想现在系统异常和应用程序的区别
答案 0 :(得分:13)
是的,您根本不需要catch
块。始终执行finally
块。
至于System.Exception
和System.ApplicationException
之间的区别:Exception
是所有异常的基类;发生非致命应用程序错误时应使用ApplicationException
。请参阅MSDN documentation。
答案 1 :(得分:4)
正如其他人提到的那样finally
即使没有catch
阻止也会运行。这支持Java的 try finally 模式(可以使用IDisposable
和using
实现)。
一个异常 (看我在那里做了什么?)是在抛出StackOverflowException
的情况下finally
阻止{{3}如果存在catch
,也不会。{/ p>
finally
块在try
块完成后(干净地或通过抛出异常)运行,就像它在代码中的位置所期望的那样。