我有關於異常處理程序的問題。 我有一個結構化的代碼,用於我的項目,它有許多用於不同目的的包和類。 在這段代碼中,有很多地方我試圖捕捉不同類型的異常。 其中有幾個是SAXException
,IOException
,NumberFormatException
, ParserConfigurationException
,RuntimeException
等。Java全局異常處理程序
在我發現異常的所有情況下,我只打印堆棧跟蹤。當我遇到一個異常時,我會從堆棧中找出它發生的地方並相應地修復它。除了例外情況,我不會做任何其他事情,因爲代碼的大小並不是很大,而且相當容易爲我調試。
現在,我正在使用由第三方開發人員提供的外部Java庫。這個庫爲我調用的每個可能的函數都拋出異常。我正在試圖在這個庫上寫一個封裝器來利用它。不過,由於這個庫,我發現try/catch塊在我的代碼中無處不在。
例如我的代碼看起來是這樣的 -
Class Wrapper
{
public void method1()
{
....
try
{
...
third party library calls...
...
} catch (Exception e) { e.printStackTrace(); }
}
public void method2()
{
....
try
{
...
third party library calls...
...
} catch (Exception e) { e.printStackTrace(); }
}
// ... and so on... there are 50-100 methods like this.
// some are even one-liners.
}
鑑於這種情況,我應該切換到全局異常處理程序,this discussion提到?
這是否會避免在我的代碼中編寫try/catch塊?
另外,我應該刪除現有的try/catch塊嗎?
謝謝!
使用寵物小精靈的錯誤處理 - 一網打盡!試一試/抓住所有代碼。 –
你必須處理檢查過的異常,不要繞過。通過打印堆棧跟蹤來吞噬異常是一種反模式,您應該真的在處理它們或重新拋出一個更高級別的類來處理。 – Perception