MyT*_*tle 13 java ejb exception java-ee ejb-3.0
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?
}
}
Run Code Online (Sandbox Code Playgroud)
或者这不适用于EJB开发人员,而只适用于EJB参考实现开发人员(容器开发人员):在后一种情况下,因此,容器不得将系统异常传播到我的业务方法,并且我的catch(Exception e)块永远不会捕获任何系统异常?
Don*_*gyi 16
还有更多类型的例外:
通常,您应该捕获业务异常.但是,如果你想在那里处理它,你当然可以把它扔到客户端.默认情况下,如果抛出BusinessException,EJB容器将不会回滚您的事务,但您可以通过以下方式注释Exception来更改此行为:
@ApplicationException(rollback = true)
public class NotEnoughMoneyOnYourAccountException extends Exception {
Run Code Online (Sandbox Code Playgroud)
如果您的程序抛出RuntimeException,它将被发送到包装为RemoteException的客户端,并且您的事务将被回滚.这些不是业务异常的例外,因此我们通常不会在EJB端捕获它们.
错误是最不常见的,它们甚至可以关闭JVM,通常我们不会捕获它们,因为通常我们无法在程序中处理它们.
| 归档时间: |
|
| 查看次数: |
9599 次 |
| 最近记录: |