Oli*_* J. 5 java ejb runtimeexception
我account在JSF bean中调用EJB方法:
try{
account.someFunction(...);
}catch(SimRuntimeException e){
logger.log(Level.FATAL, "SimRuntimeException catched !");
}catch(SimNotRuntimeException e){
logger.log(Level.FATAL, "SimNotRuntimeException catched !");
}catch(Exception e){
logger.log(Level.FATAL, "Exception catched !");
}
Run Code Online (Sandbox Code Playgroud)
我的例外情况:
public class SimRuntimeException extends RuntimeException {
public SimRuntimeException() {
super();
}
}
@ApplicationException(rollback=true)
public class SimNotRuntimeException extends Exception {
public SimNotRuntimeException() {
super();
}
}
Run Code Online (Sandbox Code Playgroud)
account.someFunction(...);抛出SimRuntimeException我陷入Exception块,因为我SimRuntimeException被包裹成EJBException可能是由EJB容器.account.someFunction(...);抛出SimNotRuntimeException我属于预期成SimNotRuntimeException那么,是什么具体的区别Exception与@ApplicationException(rollback=true)和RuntimeException好吗?
小智 7
Pal的博客指出:
EJB在Application Exceptions和System Exceptions中有所作为.应用程序异常是您定义的,您抛出的,您知道的.默认情况下,应用程序异常不会导致回滚,除非您以这种方式定义(我认为这是推荐的).方法签名中提到的每个已检查异常以及使用@ApplicationException注释的任何已检查或未检查的异常都是应用程序异常.
系统异常发生在您无法控制的情况下,并且它们是未经检查的异常.它们总是导致回滚.好的做法是,如果你将检查过的异常 - 无法避免 - 包装在你的方法中,例如进入EJBException,例如ParseException.
| 归档时间: |
|
| 查看次数: |
5956 次 |
| 最近记录: |