当我完成下面给出的代码时,我得到了这个例外。
“无法评估表达式,因为代码已优化或本机框架位于调用堆栈之上。”
- 代码 -
try
{
if (retVal == 0)
Response.Redirect("Success.aspx");
}
catch(Exception error)
{
Response.Redirect("errorpage.aspx");
}
finally{
}
从网上搜索我发现它是一个错误,如果它的成功那么我们应该结束响应...即“Response.Redirect(”Success.aspx“,false);”。工作正常..这是一个好的方法或有任何其他有效的方法来处理这个例外请帮助....
答案 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
}
希望有所帮助!