在java中,我想记录一段代码抛出的异常:
try
{
doRiskyThing();
}
catch(Throwable t)
{
log.warn("too bad");
throw t;
}
问题是现在我的方法必须声明它抛出 throwable。
另一方面,如果我将异常记录在finally block 中,我如何知道正在抛出什么异常(以及是否抛出任何异常)。
最佳答案
您至少可以为未检查的异常编写一个 catch 并为检查的异常编写 n 个 catch block 。
try{
..
}catch(RuntimeException e){
log(e);
throw e;
}catch(ExceptionException ..){
log(e);
throw e;
}
这不会更改您的方法的签名。捕获错误有点异味。嗯,记录和抛出异常也是一种味道。这将重复错误消息。
高级异常处理是 JDK 7 中从项目 coin 中删除的一项功能。
关于java:记录抛出的异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1516657/