java日志类型的异常

时间:2013-11-18 23:43:37

标签: java logging exception-handling

由于代码块可能抛出的异常数量,我必须按如下方式捕获泛型异常:

...
try {
    //some scandalous code
    scandalousMethod();
} catch (Exception e) {
    log.error(String.format("'%s'", e.class.getName())); //Need suggestions here
}
...

我需要记录catch块中捕获的异常类型。我不认为e.class.getName()会起作用。有什么建议吗?

2 个答案:

答案 0 :(得分:1)

你只需要这样做:

e.getClass()

而不只是e.classgetClass方法在Object上定义(因此它可用于所有引用类型)并在运行时查找对象的类型。

顺便说一下,我不知道你使用哪个日志框架,但是大多数日志框架都有重载,将异常作为参数。这很有用,因为记录器可以设置为打印完整的堆栈跟踪,而不仅仅是其方法。这有点像:

log.error("my specific message", e);

答案 1 :(得分:0)

记录异常的正确方法(在今天的大多数日志框架中 - JCL,log4j,Slf4j,logback)应该执行以下操作:

  

log.error(“处理scandalousMethod时出错:这里可能有些输入”,e);

注意最后的“,e”。这通常不仅打印出异常的完整类名,还打印出消息和堆栈跟踪。