【发布时间】:2015-04-10 18:10:11
【问题描述】:
所以,我从this question 了解到 finally 块可用于执行代码,即使发生异常并且即使异常未被捕获并允许向上传播。
我从this question 了解到,在 C# 中,throw 关键字可以在 catch 块中单独使用(不带参数)以允许捕获异常继续传播,甚至不重置堆栈跟踪。
那么,我的问题是,这两个块之间有什么区别:
/* example 1 */
try { /* try stuff */ }
finally { /* finally/catch stuff */ }
/* example 2 */
try { /* try stuff */ }
catch { /* finally/catch stuff */ throw; }
不要同时运行try stuff,然后运行finally/catch stuff,然后允许抛出的异常使用相同的堆栈跟踪传播?
【问题讨论】:
标签: c# exception-handling try-catch try-finally