2016-03-31 125 views
2

拋出異常並直接捕獲它只是爲了打印錯誤是否有意義?例外 - 立即拋出並捕獲

if(...){ 

} else { 
    try{ 
     throw new Exception(); 
    } catch (Exception e){ 
     e.printStackTrace(); 
    } 
} 
+1

我想這取決於環境。注意拋出異常是很昂貴的,如果你只是向用戶輸出錯誤信息,一個簡單的'System.err.println(...)'就足夠了。 –

回答

3

有沒有必要拋出和副漁獲物,你可以簡單地調用:

new Exception().printStackTrace(); 

或更容易:

Thread.dumpStack(); 

您也可以從當前線程獲取堆棧跟蹤作爲array:

StackTraceElement[] trace = Thread.currentThread().getStackTrace(); 

如果你想做些更詳細的事情,比如在運行時檢查堆棧(例如獲取th e調用方法的名稱)。

0

我想只有當你明確希望將異常發送到日誌文件與記錄儀(進入catch塊),這可能是有用的,或者在especific方式註冊。

+0

所以做e.printStackTrace()是有道理的,因爲這會將跟蹤放入日誌中? –

+0

不,這不會將跟蹤記錄到日誌中,但是您可以使用類似Logger.error(「Error:」,e)的方式修改catch塊,以便將該異常註冊到Logger文件中 – Wakachopo