Thread was being aborted 分析与解决

在捕获异常的try块中使用
response.redirect();
response.write();response.end();
有时会提示 线程已被中止(英文:"Thread was being aborted")错误; (该错误不会每次都产生,在相同地方只是偶尔会出现)
分析该错误的原因是由于执行这两个命令会重新发起一次请求,将当前请求的进程abort掉;通俗点讲就是当进程还想继续执行的时候, 发现自己已经被调用过Abort方法了. 既然自己作为线程已经被中止, 就无法执行了, 于是exception丢了出来。
解决方法有如下三种:
1、将这两个命令放到try/catch块外,不捕获异常就不会提示这个错误;
2、捕获异常时进行判断:
try
{}
catch(Exception e)
{
if(!(ex is System.Threading.ThreadAbortException))
{
//在这里显示错误
}
}
3、捕获进程终止错误不做处理
try
{}
catch (ThreadAbortException)
{ }
catch(Exception ex)
{
//显示错误
}
有网友说可以在 Response.Write();加上 Response.Clear();不知道这个方法是否可行;
 

你可能感兴趣的:(thread)