【问题标题】:Is a finally block guaranteed to be executed for an unhandled exception in asp.net?是否保证在 asp.net 中针对未处理的异常执行 finally 块?
【发布时间】:2019-09-12 16:43:53
【问题描述】:

在这个问题When is finally run if you throw an exception from the catch block?

它解释了除非 this documentation 确认的异常未处理,否则保证最终块运行的警告。

对于控制台应用,很简单,未处理的异常会终止进程。但是,在 ASP.net 中,我的理解变得混乱。 ASP.net 中未处理的异常不会终止进程,甚至不会回收应用程序池,实际上框架代码会执行,以便通过网络将错误详细信息发送回。但是,此类错误仍通常称为unhandled exceptions

就 .net 运行时而言,ASP.net 中的这种“未处理的异常”是否真正被处理,因此我可以相信 finally-block 将始终被执行?

注意:我知道某些异常(例如 StackOverflowException)总是会使应用程序池崩溃,因此很可能不会执行 finally 块,我不关心那些边缘情况。 p>

【问题讨论】:

    标签: asp.net .net try-catch-finally


    【解决方案1】:

    由于异常由 asp.net 框架进一步处理堆栈,最终块将被执行。只是因为你的代码没有处理异常并不意味着它没有被处理。

    【讨论】:

      猜你喜欢
      • 2010-10-24
      • 2015-01-17
      • 1970-01-01
      • 2011-08-26
      • 2016-09-19
      • 1970-01-01
      • 2017-10-17
      • 1970-01-01
      • 2019-03-31
      相关资源
      最近更新 更多