小围脖

Try , Try , Never Say Die !

 

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();不知道这个方法是否可行;
 

posted on 2011-02-24 14:13  小围脖  阅读(30718)  评论(1编辑  收藏  举报

导航