Response.Redirect 与 异常(线程正在中止)
2006-04-25 19:56 晓风残月 阅读(5216) 评论(2) 编辑 收藏 举报今天看到 现实会那么美? 中关于有关终止线程的一个问题,让我想起了Response.Redirect 也有类是的问题。
如果使用 try 、catch 处理包含Response.Redirect 语句代码,总是能捕捉到异常:线程正在中止,
其实不仅仅Response.Redirect 会,Response.End 和 Server.Transfer 也是一样的情况,本质的原因的原因是Response.End 方法停止页的执行,并将该执行变换到应用程序的事件管线中的 Application_EndRequest 事件, Response.End 后面的代码行将不执行。通常认为Response.End 方法是线程的非正常结束,因此MS就在内部抛出ThreadAbortException 异常,而Response.Redirect 和 Server.Transfer 这两种方法都在内部调用 Response.End。
关于 的解决方案见MS KB:
PRB: ThreadAbortException Occurs If You Use Response.End, Response.Redirect, or Server.Transfer
http://support.microsoft.com/default.aspx?scid=kb;EN-US;312629
关于 为什么有些方法一定要抛出异常,有关终止线程的一个问题 这里有非常详细的讨论。^_^
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步