response.redirect并抛入catch块

Nov*_*per 3 c# asp.net try-catch

在以下场景中会发生什么?它会在response.redirect之后抛出工作吗?

或者我需要在main方法的catch块中使用Response.Redirect,它会抛出异常调用堆栈....

try
{    
//code
}
catch(Exception ex)
{    
Response.Redirect("Error.aspx");
throw;    
}
Run Code Online (Sandbox Code Playgroud)

tva*_*son 7

由于您未提供参数来指示当前页面是否应继续执行,因此它将通过调用End()自动终止页面.使用带有单个参数的方法与使用两个参数调用方法相同,第二个(endResponse)设置为true.由于End()导致抛出异常,因此它不会到达throw语句.

参考:http://msdn.microsoft.com/en-us/library/a8wa7sdt.aspx

在页面处理程序中使用此方法终止对一个页面的请求并为另一个页面启动新请求时,请将endResponse设置为true或调用Redirect方法重载.此方法为原始请求调用End,该请求在完成时抛出ThreadAbortException异常.

如果希望页面继续执行,则需要使用带有两个参数的签名并将endResponse参数设置为false.