在下面的代码中,someFunctionCall()有时会生成"Thread is aborted"异常.为什么代码块B中的代码永远不会运行?ASP.NET是否为每个方法调用启动一个新线程?我很惊讶地看到,当发生此异常时,块b中的代码永远不会运行,该方法返回,并且我的应用程序继续运行.有人可以解释一下吗?
谢谢.
public void method()
{
// CODE BLOCK A
//...
try
{
someFunctionCall(); // this call is generating thread abort exception
}
catch(Exception ex)
{
// log exception message
}
// CODE BLOCK B
// ...
}
Run Code Online (Sandbox Code Playgroud)
SLa*_*aks 34
这是一个ThreadAbortException; 这是一个特殊的异常,除非你打电话,否则会在每个catch块的末尾自动重新抛出Thread.ResetAbort().
ASP .NET方法类似Response.End或Response.Redirect(除非你通过false)抛出此异常来结束当前页的处理; 你someFunctionCall()可能正在调用其中一种方法.
ASP .Net本身处理此异常并调用ResetAbort继续处理.
| 归档时间: |
|
| 查看次数: |
46952 次 |
| 最近记录: |