最终,我想
if (badThingsHappen) {
log the issue
throw exception with description
}
这里明显的冗余是,异常描述和要记录的消息通常(通常)是相同的。
这看起来很冗长
if (badThingsHappen) {
logger.error("oh no! not again!");
throw new AppException("oh no! not again!");
}
声明临时String感觉不对
if (badThingsHappen) {
String m = "oh no! not again!";
logger.error(m);
throw new AppException(m);
}
是否可以让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;
}
}
并使用它:
if (badThingsHappen) {
AppException.logAndThrow(logger, "oh no! not again!");
}
关于java - 抛出和记录异常,更好的方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10387458/