2013-04-18 110 views
2

我能做到這一點的C#類庫來處理的類庫代碼本身的執行過程中可能出現的異常?我在編寫類庫和異常處理方面是新手。請指教。C#類庫異常處理

private void MethodName(String text) 
    { 
     try 
     { 
      .............. 
      .............. 
      .............. 
     } 
     catch (Exception ex) 
     { 
      throw new Exception(ex.Message.ToString()); 
     } 
    } 

我在谷歌搜索和計算器,但沒有發現任何文章我是否允許處理異常的類庫這種方式,或者如果它不是一個推薦的方式來做到這一點。但它的工作。可能是一個愚蠢的問題,但我有這個疑問。

謝謝。

+6

你爲什麼要捕捉異常,只是走了一遍扔呢?做一些有用的事情或不要抓住它。 –

+0

@Tim,可能有多個錯誤,比如說空指針異常,超範圍異常,索引異常異常等,我不想處理它們並丟棄它們。所以想到了捕獲一個常見的異常並將其投入到調用該方法的應用程序中。 –

+2

如果你這樣編碼,調用者很難對你調用的代碼產生的任何異常做任何有意義的事情。這是你的意圖嗎? – supercat

回答

6

是的,你可以做到這一點,但一般你應該只捕獲異常,如果你打算用它做什麼 - 即吞下或增加價值(通過轉化,包裝或作記錄)。

使用你的方法的例子,你應該如果text是零,你的方法需要一個值拋出異常。除此之外,你應該讓異常冒泡給調用者處理,除非你打算對它做些什麼,或者它是你打算壓制的預期異常。

你也應該不會拋出一個新的異常,而不是隻用throw關鍵字重新拋出當前異常:

catch (Exception ex) 
{ 
    //do something 

    throw; 
}