EJB规范中的一句话:
如果Bean方法遇到系统异常或错误,它应该只是将错误从Bean方法传播到容器(即,Bean方法不必捕获异常)。
但我不理解这是什么意思。这是否意味着我不应该捕获所有类型的异常(例如尝试捕获 Exception
类),并将其重新抛出为我的应用程序异常?
以下是更清晰的示例:
public void beanMethod throws MyApplicationException {
try {
// do something
} catch (Exception e) {
throw new MyApplicationException(e); // Should I do it like this?
}
}
这是否仅适用于EJB参考实现开发人员(容器开发人员),而不是EJB开发人员:如果是后者,则容器不应将系统异常传播到我的业务方法,因此我的catch(Exception e)
块永远不会捕获任何系统异常?
MyBusinessException
?如果我不捕获它,那么容器将假定我的DaoException是系统异常,并因此销毁ejb实例(当发生系统异常时,ejb实例被销毁)。但我不想因SQL代码中的某些错误而失去ejb实例。 - WelcomeTo