在这个问题中,如果你从 catch 块抛出异常,什么时候最终运行?
它解释了一个警告,即 final-block 保证运行,除非异常未处理,如本文档所确认的那样。
对于控制台应用,这很简单,未经处理的异常会终止进程。 然而,在 ASP.net 我的理解变得混乱。 ASP.net 中未经处理的异常不会终止进程,甚至不会回收应用程序池,实际上会执行框架代码,以便通过网络发送回错误详细信息。但是,此类错误通常仍称为未处理的异常。
就 .net 运行时而言,是否实际处理了 ASP.net 中的"未处理异常",以便我可以信任 final-block 将始终执行?
注意:我知道某些异常(例如 StackOverflowException)总是会使应用程序池崩溃,因此可能不会执行 final-block,我不关心这些边缘情况。
由于异常由 asp.net 框架在堆栈中进一步处理,因此将执行 finally 块。仅仅因为您的代码不处理异常并不意味着它未处理。