如何处理这个ThreadAbort异常..?

时间:2010-07-12 12:02:45

标签: c# asp.net

当我完成下面给出的代码时,我得到了这个例外。

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

- 代码 -

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

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

1 个答案:

答案 0 :(得分:4)

你确定这是一个例外吗?它是什么类型的例外?

看起来你更像是在调试器中使用了'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
}

希望有所帮助!