在Java中记录异常?
我正在Java应用程序中使用commons日志记录,我想从堆栈跟踪记录异常在Java中记录异常?,java,logging,apache-commons,Java,Logging,Apache Commons,我正在Java应用程序中使用commons日志记录,我想从堆栈跟踪记录异常 catch( Exception exception ) { logger.error( "FailedCreateActivityFunction Exception Occured : " , exception ); throw new EngineException( getMessage( ERROR_FailedCreateActivityFunction, Functio
catch( Exception exception ) {
logger.error( "FailedCreateActivityFunction Exception Occured : " , exception );
throw new EngineException( getMessage( ERROR_FailedCreateActivityFunction, FunctionName ), exception );
}
这会引发两次异常吗?如果是,如何修复?
以这种方式使用它与使用+exception而不是、exception有什么区别
logger.error( "FailedCreateActivityFunction Exception Occured : " + exception );
不,它不会扔两次 将打印您的消息和异常的堆栈跟踪
将只打印您的消息和异常消息(调用throwable.toString()that),而不打印stacktrace。否它不会两次抛出异常。此代码将仅引发EngineeException 您应该避免记录和抛出异常,只做一件事。日志和抛出是一种反模式。您可以在此处阅读有关异常处理的更多信息: 这两种执行错误方法的方法之间的区别是:
- 在logger.error(String msg,Throwable t)中,传递对象,所以日志框架有更多信息,可以显示完整的堆栈跟踪
- 在logger.error(String msg)-您创建字符串时,不会向日志框架传递任何附加信息
+exception
或,exception
?是否有其他方法将堆栈跟踪推送到记录器?您通常应该使用,exception
方法。据我所知,所有好的日志框架都在以这种方式使用时将堆栈跟踪推送到记录器。