Jam*_*sev 7 java error-handling
最终,我想
if (badThingsHappen) {
 log the issue
 throw exception with description
}
Run Code Online (Sandbox Code Playgroud)
这里明显的冗余是通常异常描述和要记录的消息(通常)是相同的.
这看起来不必要地冗长
if (badThingsHappen) {
 logger.error("oh no! not again!");
 throw new AppException("oh no! not again!");
}
Run Code Online (Sandbox Code Playgroud)
声明临时字符串感觉不对
if (badThingsHappen) {
 String m = "oh no! not again!";
 logger.error(m);
 throw new AppException(m);
}
Run Code Online (Sandbox Code Playgroud)
是否可以让Exception的构造函数处理日志记录?有更好的(更干净的)方式吗?
您可以使用实用方法:
public class AppException extends Exception {
    public static AppException logAndThrow(Logger logger, String message) throws AppException {
        AppException e = new AppException(message);
        // log the stack trace as well
        logger.error(message, e);
        throw e;
    }
}
Run Code Online (Sandbox Code Playgroud)
并使用它:
if (badThingsHappen) {
    AppException.logAndThrow(logger, "oh no! not again!");
}
Run Code Online (Sandbox Code Playgroud)
        |   归档时间:  |  
           
  |  
        
|   查看次数:  |  
           3216 次  |  
        
|   最近记录:  |