2012-12-28 75 views
2

我正在使用公共日誌記錄在Java應用程序中,並且我想從堆棧跟蹤記錄異常。在Java中記錄異常?

catch(Exception exception) { 
     logger.error("FailedCreateActivityFunction Exception Occured : " , exception); 
     throw new EngineException(getMessage(ERROR_FailedCreateActivityFunction, FunctionName), exception); 
     } 

這會拋出異常兩次嗎?如果是的話,如何解決它?

請告訴我使用它作爲使用+異常代替這樣的區別,異常

logger.error("FailedCreateActivityFunction Exception Occured : " + exception); 
+0

使用+例外,而不是,除了可以在Java文檔 可以看到的差異「公無效錯誤(對象消息, Throwable t)「 錯誤函數只能接受消息或消息+可拋出 – goravine

回答

4

不,它不會拋出異常兩次。這段代碼只會引發EngineException。

你應該避免記錄和拋出異常,只做一件事。日誌和投擲是一個反模式。您可以在這裏閱讀有關異常處理的更多信息:Exception Handling Antipatterns。執行誤差法的那些兩種方式之間

區別是:

  • 在logger.error(絃樂味精,Throwable的噸) - 傳遞對象,所以日誌框架有更多的信息,並能顯示你完全堆棧微量元素logger.error
  • (絃樂味精) - 您創建的字符串,沒有額外的信息傳遞到日誌框架
+0

您能否指定我應該在這種情況下使用哪種方式'+ exception'或''exception'? 任何其他方式將該堆棧跟蹤記錄器? –

+3

你通常應該使用',異常'的方式。據我所知,當你使用這種方式時,所有正確的日誌記錄框架都會將堆棧跟蹤記錄到記錄器。 – mleczey