在捕獲異常的try塊中使用
response.redirect();
或
response.write();response.end();
有時會提示執行緒已被中止(英文:"Thread was being aborted")錯誤;(該錯誤不會每次都產生,在相同地方只是偶爾會出現)
分析該錯誤的原因是由於執行這兩個命令會重新發起一次請求,將當前請求的程序abort掉;通俗點講就是當程序還想繼續執行的時候, 發現自己已經被呼叫過Abort方法了. 既然自己作為執行緒已經被中止, 就無法執行了, 於是exception丟了出來。
解決方法有如下三種:
1、將這兩個命令放到try/catch塊外,不捕獲異常就不會提示這個錯誤;
2、捕獲異常時進行判斷:
try
{}
catch(Exception e)
{
if(!(ex is System.Threading.ThreadAbortException))
//在這裡顯示錯誤
}
3、捕獲程序終止錯誤不做處理
catch (ThreadAbortException)
{ }
catch(Exception ex)
//顯示錯誤
有網友說可以在Response.Write();前加上Response.Clear();不知道這個方法是否可行;
轉自http://www.cnblogs.com/xyd21c/archive/2011/02/24/1963748.html
在捕獲異常的try塊中使用
response.redirect();
或
response.write();response.end();
有時會提示執行緒已被中止(英文:"Thread was being aborted")錯誤;(該錯誤不會每次都產生,在相同地方只是偶爾會出現)
分析該錯誤的原因是由於執行這兩個命令會重新發起一次請求,將當前請求的程序abort掉;通俗點講就是當程序還想繼續執行的時候, 發現自己已經被呼叫過Abort方法了. 既然自己作為執行緒已經被中止, 就無法執行了, 於是exception丟了出來。
解決方法有如下三種:
1、將這兩個命令放到try/catch塊外,不捕獲異常就不會提示這個錯誤;
2、捕獲異常時進行判斷:
try
{}
catch(Exception e)
{
if(!(ex is System.Threading.ThreadAbortException))
{
//在這裡顯示錯誤
}
}
3、捕獲程序終止錯誤不做處理
try
{}
catch (ThreadAbortException)
{ }
catch(Exception ex)
{
//顯示錯誤
}
有網友說可以在Response.Write();前加上Response.Clear();不知道這個方法是否可行;
轉自http://www.cnblogs.com/xyd21c/archive/2011/02/24/1963748.html