Response.End()、Response.Redirect()、Server.Transfer()导致“正在中止线程”异常的问题...

本文探讨了在.NET框架中使用try-catch处理异常时遇到的特定问题,特别是当调用Response.End()、Response.Redirect()、Server.Transfer()时如何引发正在中止线程异常(ThreadAbortException),并提供了屏蔽此异常的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

try
{
     if (true)
           {
                Response.Write("测试1");
                Response.End();
            }
    else
           {

                   if (true)
                {
                     Response.Write("测试2");
                     Response.End();
                }
                    else
                {
                    Response.Write("测试3");
                    Response.End();
                }
            }

}

catch(Exception ex)
{
   Response.Write("error");
   Response.End();
}

 

当Response.End()、Response.Redirect()、Server.Transfer()被try-catch就会抛出“正在中止线程”异常的问题(ThreadAbortException)

ThreadAbortException能屏蔽还是屏蔽,因为ThreadAbortException是一个很匪夷所思的异常,因为在.net中它如果不捕获,就不会抛出异常,

只是简单的终止当前线程,而其他线程继续运行不受影响。

 

 

解决方法:屏蔽ThreadAbortException

//这是屏蔽ThreadAbortException异常用的

catch(ThreadAbortException)

{
}
catch(Exception ex)
{
    Response.Write("error");
    Response.End();
}

转载于:https://www.cnblogs.com/LockLive/p/4507658.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值