因此,我从这个问题中了解到,finally
即使发生异常并且即使异常未被捕获并允许向上传播,也可以使用块来执行代码。
我从这个问题中了解到,在 C# 中,throw
可以在块中单独使用关键字(不带参数),catch
以允许捕获的异常继续传播,甚至无需重置堆栈跟踪。
那么,我的问题是这两个块之间有什么区别:
/* example 1 */
try { /* try stuff */ }
finally { /* finally/catch stuff */ }
/* example 2 */
try { /* try stuff */ }
catch { /* finally/catch stuff */ throw; }
不要同时运行东西 the try stuff
,然后运行finally/catch stuff
,然后允许抛出的 Exception 使用相同的堆栈跟踪传播?