C# response.redirect并抛出catch块

C# response.redirect并抛出catch块,c#,asp.net,try-catch,C#,Asp.net,Try Catch,在下面的场景中会发生什么?它会在response.redirect之后抛出work吗 或者我需要在main方法的catch块中使用Response.Redirect,在该块中它抛出异常调用堆栈 try { //code } catch(Exception ex) { Response.Redirect("Error.aspx"); throw; } 由于您没有提供指示当前页是否应继续执行的参数,因此它将通过调用End()自动终止该页。使用带有单个参数的方法与调用带有两个

在下面的场景中会发生什么?它会在response.redirect之后抛出work吗

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

try
{    
//code
}
catch(Exception ex)
{    
Response.Redirect("Error.aspx");
throw;    
}

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

参考:

在页面中使用此方法时 处理程序来终止一个请求 翻页并开始新的请求 另一页,将endResponse设置为true 或者调用重定向方法重载。 此方法为原始对象调用End 请求,它抛出一个 发生时的ThreadAbortException异常 完成


如果希望页面继续执行,则需要使用带有两个参数的签名,如果调用Response.Redirect(无重载),则需要将endResponse参数设置为
false
,然后立即停止执行,从而不会引发抛出

但是,如果使用重载并传入false,例如
Response.Redirect(“Error.aspx”,false)
,则它将继续执行页面,然后重定向


(至少,这是我的理解。

你为什么不试试呢?尽管这个问题很有趣。