在以下情況下會發生什麼情況?它會在response.redirect之後拋出工作嗎?response.redirect並投入catch塊
或者我需要在它拋出異常調用棧主要方法catch塊使用Response.Redirect ....
try
{
//code
}
catch(Exception ex)
{
Response.Redirect("Error.aspx");
throw;
}
在以下情況下會發生什麼情況?它會在response.redirect之後拋出工作嗎?response.redirect並投入catch塊
或者我需要在它拋出異常調用棧主要方法catch塊使用Response.Redirect ....
try
{
//code
}
catch(Exception ex)
{
Response.Redirect("Error.aspx");
throw;
}
既然你沒有提供的參數來指示是否當前頁面應該繼續執行,它會通過調用End()自動終止頁面。使用單個參數的方法與使用兩個參數調用方法的方法相同,第二個(endResponse)設置爲true
。由於End()會導致異常被拋出,所以它不會到達你的throw語句。
參考:http://msdn.microsoft.com/en-us/library/a8wa7sdt.aspx
當您使用此方法在 頁面處理程序終止一個 頁面的請求,並開始一個新的請求 另一個頁面,設置endResponse真 或致電重定向方法過載。 此方法對原始 請求調用End,該請求在 完成時拋出 ThreadAbortException異常。
如果您希望頁面繼續執行,您需要使用帶有兩個參數的簽名並將endResponse參數設置爲false
。
如果你調用Response.Redirect(沒有超載),那麼它應該立即停止執行,所以不會引發拋出。
但是,如果您使用重載並通過false例如。 Response.Redirect("Error.aspx", false)
然後它將繼續執行頁面,然後重定向。
(至少,這是the documentation)我的理解。
你爲什麼不嘗試一下呢?有趣的問題,但。 – 2009-10-19 22:04:30