拋出異常並直接捕獲它只是爲了打印錯誤是否有意義?例外 - 立即拋出並捕獲
if(...){
} else {
try{
throw new Exception();
} catch (Exception e){
e.printStackTrace();
}
}
拋出異常並直接捕獲它只是爲了打印錯誤是否有意義?例外 - 立即拋出並捕獲
if(...){
} else {
try{
throw new Exception();
} catch (Exception e){
e.printStackTrace();
}
}
有沒有必要拋出和副漁獲物,你可以簡單地調用:
new Exception().printStackTrace();
或更容易:
Thread.dumpStack();
您也可以從當前線程獲取堆棧跟蹤作爲array:
StackTraceElement[] trace = Thread.currentThread().getStackTrace();
如果你想做些更詳細的事情,比如在運行時檢查堆棧(例如獲取th e調用方法的名稱)。
我想只有當你明確希望將異常發送到日誌文件與記錄儀(進入catch塊),這可能是有用的,或者在especific方式註冊。
所以做e.printStackTrace()是有道理的,因爲這會將跟蹤放入日誌中? –
不,這不會將跟蹤記錄到日誌中,但是您可以使用類似Logger.error(「Error:」,e)的方式修改catch塊,以便將該異常註冊到Logger文件中 – Wakachopo
我想這取決於環境。注意拋出異常是很昂貴的,如果你只是向用戶輸出錯誤信息,一個簡單的'System.err.println(...)'就足夠了。 –