【问题标题】:how to handle this ThreadAbort Exception..?如何处理这个 ThreadAbort 异常..?
【发布时间】:2010-07-12 12:02:44
【问题描述】:

当我完成下面给出的代码时遇到了这个异常..

“无法评估表达式,因为代码已优化或本机框架位于调用堆栈顶部。”

--代码--

try
{
     if (retVal == 0)
     Response.Redirect("Success.aspx");
}
catch(Exception error)
{
   Response.Redirect("errorpage.aspx");
}
finally{
}

从网上搜索我发现它是一个错误,如果它成功,那么我们应该结束响应......即“Response.Redirect(“Success.aspx”,false);“。它工作正常......这是一个好的方法或有任何其他有效的方法来处理这个异常请帮助....

【问题讨论】:

    标签: c# asp.net


    【解决方案1】:

    您确定这是一个例外吗?这是什么类型的异常?

    看起来更像是您在调试器中使用了“Break”,它无法评估监视或表达式,因为它正忙于运行一行代码或非托管调用。

    尝试按 F10 或 F11 进入下一行托管代码,然后再次查看表达式。

    使用断点也应该有效。

    如果这不能解决问题,请发表评论,我会尝试回复或更具体。


    这可能就是你所看到的:

    此外,Response.Redirect 将始终抛出 ThreadAbortException,请参见此处:

    http://msdn.microsoft.com/en-us/library/a8wa7sdt(VS.80).aspx

    为了确保不再执行代码,并且将运行的下一个代码是在生成下一页的上下文中。

    你可以这样做:

    try
    {
        // code with Response.Redirect
    }
    catch (ThreadAbortException)
    {
        // ignore this exception, it is expected from Response.Redirect
    }
    catch (Exception ex)
    {
        // handle / log / redirect using ex
    }
    

    希望有帮助!

    【讨论】:

    • 它是一个异常......在调试时我收到了这条消息......否则它总是被重定向到错误页面,
    • 请看更新:Response.Redirect 总是抛出一个异常(ThreadAbortException),虽然它不是你说的那个,修复应该仍然有效。
    • 感谢工作正常...我刚刚做了 Response.Redirect("Success.aspx", false);尝试返回值是否成功...并且它也很好用..这是一个好方法..这是一个忽略异常的好方法..?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-03-12
    • 2018-01-23
    • 2011-09-21
    • 1970-01-01
    • 2020-09-01
    • 2021-04-01
    • 1970-01-01
    相关资源
    最近更新 更多