以下情况会发生什么?它会在response.redirect之后抛出工作吗?
或者我需要在main方法的catch块中使用Response.Redirect,它会抛出异常调用堆栈....
try
{
//code
}
catch(Exception ex)
{
Response.Redirect("Error.aspx");
throw;
}
答案 0 :(得分:7)
由于您没有提供参数来指示当前页面是否应继续执行,因此它将通过调用End()自动终止页面。使用带有单个参数的方法与使用两个参数调用方法相同,第二个(endResponse)设置为true
。由于End()导致抛出异常,因此它不会到达你的throw语句。
参考:http://msdn.microsoft.com/en-us/library/a8wa7sdt.aspx
在页面中使用此方法时 处理程序终止一个请求 页面并开始新的请求 另一页,将endResponse设置为true 或者调用Redirect方法重载。 此方法为原始调用End 请求,抛出一个 ThreadAbortException异常 完成。
如果您希望页面继续执行,您需要使用带有两个参数的签名,并将endResponse参数设置为false
。
答案 1 :(得分:3)
如果你调用Response.Redirect(没有重载),它应该立即停止执行,因此不会引发throw。
但是,如果您使用重载并传入false,例如。 Response.Redirect("Error.aspx", false)
然后它将继续执行页面,然后重定向。
(至少,这是我对the documentation)的理解。