回 帖 发 新 帖 刷新版面

主题:帮我看看这是什么异常

System.Threading.ThreadAbortException: 正在中止线程。 在 System.Threading.Thread.AbortInternal() 在 System.Threading.Thread.Abort(Object stateInfo) 在 System.Web.HttpResponse.End() 在 System.Web.HttpResponse.Redirect(String url, Boolean endResponse) 在 System.Web.HttpResponse.Redirect(String url) 在 ATINC_NetMemberRegister.upServer_Click(Object sender, EventArgs e) 位置 e:\Case\PrintWindow\PrintWindowNetVersion\Object\NETVersion\ATINC\NetMemberRegister.aspx.cs

.NET2.0中.我习惯的try{}了一下出来了这个异常.可是奇怪的是去掉try{}catch{}后.竟然也没有报任何错.运行也不报错.

请问是不是重定向后就会出现这个异常.?怎么解决?

回复列表 (共4个回复)

沙发

Response.Redirect(..., false);
可避免此类异常
因为Resonse.Redirect默认自动终止当前线程

板凳

thanks 请问该如何避免呢/?

3 楼

Response.Redirect(...) = Response.Redirect(..., true)
会在跳转完成之后自动执行Response.End(),而此方法用于中止当前线程

就像windows中的基本线程机制一样,中止线程会抛出ThreadAbortException给.net runtime。如果此时用try..catch..自然可以捕捉到,不过这个异常是无害的,只是通知.net runtime当前线程可以中止

所以正如我之前所说的,Response.Redirect(..., false);或者不将Response.Redirect(...)放在try...catch...里面或者忽略ThreadAbortException自然就可以避免了

4 楼

I konw thanks

我来回复

您尚未登录,请登录后再回复。点此登录或注册