【发布时间】:2011-11-04 20:01:17
【问题描述】:
我试图更好地理解异常处理和在j2ee 环境中记录以重构一些遗留代码(我们使用log4j 作为我们的记录机制)。我们当前的大部分代码在业务层执行类似于下面代码的操作,但是,我想切换到未经检查的异常并忽略它们,除非在某处处理它们有意义:
try {
doSomething();
} catch (MyException e) {
log.error("Exception:", e);
throw e;
}
在业务层抛出异常后,它会向上传播到表示层,表示层再次捕获异常,通常将其包装在PortletException 或ServletException 中并再次抛出。然后,它由 Spring 处理程序处理,该处理程序向用户显示“友好”消息。我最终只想处理我们想要显示特定错误消息的异常,而忽略其他所有内容。
问题:
- 是否需要在业务层记录异常?如果没有,做 我需要记录异常(尤其是未检查的异常)吗?
- 未使用 log4j 记录的未捕获异常会发生什么情况? (如果它们仍然打印在控制台中,那么目的是什么? log4j?)
我对这个过程的工作原理感到困惑......
谢谢。
编辑:如果在外部库(Spring、Hibernate 等)中发生异常,是否假定这些异常将使用正在使用的任何日志记录机制打印出来?在那种情况下,我想我只需要记录我的代码抛出的异常......还是我在这里离基地很远?
【问题讨论】:
标签: java jakarta-ee log4j