在 Try Catch Finally block 中,finally block 是无论如何总是执行,还是仅当 catch block 不返回错误时才执行?
我的印象是 finally block 只有在 catch block 没有错误地通过时才会执行。如果 catch block 因为错误而被执行,它不应该一起停止执行并返回错误消息吗?
最佳答案
finally block (几乎)总是执行,无论是否有异常。
我说 nearly 是因为在某些情况下 finally 不能保证被调用:
- 如果您的代码中存在无限循环或死锁,导致执行保留在 try 或 catch block 内,则 finally block 将永远不会执行。
- 如果您的应用程序因终止进程而突然终止。
- 停电。
- 调用 Environment.FailFast .
- 一些异常(exception)情况,例如:
- 终结器中抛出的异常 ( source )。
此外,即使输入 finally block ,如果 ThreadAbortException
在线程进入 finally block 时发生,finally block 中的代码将不会运行。
可能还有其他一些情况......
关于c# - 尝试捕获最后的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3304308/