2014-11-17 95 views
0

我想從catch塊中拋出一個自定義的異常,也就是說,每當發生任何異常時它都應該被catch塊捕獲並拋出一個自定義的異常。我正在嘗試使用下面的代碼,但將catch塊中的運行時異常設置爲「未處理的異常」。我們可以從catch塊中拋出一個自定義異常嗎?

try{ 
    ///some error 
} 
     catch(Exception e){ 
    try{ 
      throw new CustomException("Exception1", e); 
     } 
    catch(CustomException ce) 
     { 
     Console.WriteLine("Custom Exception Caught" + ce.StackTrace); 

     } 
} 


public class CustomException : Exception 
{ 

    public CustomException : base() 
    { 
    } 

    public CustomException(string message, Exception innerException) : base(message, innerException) 
    { 
    processError(message, innerException); 
    } 
} 

public static void processError(string mgs, Exception e) 
    { 
    switch(mgs) 
    { 
    case "Exception1": 
     Console.WriteLine("Exception1 caught" + e.StackTrace); 
     break; 
    case "Exception2": 
     Console.WriteLine("Exception2 caught" + e.StackTrace); 
     break; 
    default: 
     Console.WriteLine("Some other Exception caught" + e.StackTrace); 
     break; 
     } 
    } 

任何有關上述問題的提示都非常感謝。提前致謝。

+0

「但是出現錯誤」對我們來說太過模糊以至於無法幫助您。你什麼時候得到錯誤 - 在編譯時或執行時?如果是在執行時,這可能是因爲沒有什麼能夠捕捉到你拋出的'CustomException' ... –

+0

@ Jin Skeet,根據你的疑問編輯。 – Anand

+0

你的編輯顯示如果在'try'塊中拋出'CustomException',但是你從下面的'catch'塊拋出它......這個新異常不會被catch塊捕獲它上面。目前還不清楚你想在這裏發生什麼 - 你想要拋出'CustomException'嗎? –

回答

1

是的,簡單的寫

throws new ExceptionType(parameter); 

其中ExceptionType是定製的異常類的名稱。