EJB异常处理全解析
1. EJB系统异常概述
在EJB中,大多数系统异常是未检查异常,但并非全部如此。系统异常是 RuntimeException
、 RemoteException
或它们的子类的实例。换句话说,非应用程序异常的异常就是系统异常。这些异常源于底层系统问题,是客户端无法预见的问题。不过,系统问题也可能由编程错误引起,比如无法获取数据库连接或从另一个bean收到意外的 RemoteException
。
需要注意的是,除了 RemoteException
(它是已检查异常),所有系统异常都是未检查异常。这意味着远程接口应该声明它们,并且客户端应该预期它们。
以下是标准系统异常的分类:
| 异常类型 | 异常性质 | 接收客户端 |
| ---- | ---- | ---- |
| RuntimeException
及其子类 | 未检查异常 | 本地客户端 |
| RemoteException
及其子类 | 已检查异常 | 远程客户端 |
如果一个方法遇到运行时异常( RuntimeException
或其任何子类)或错误,它应该直接将其传播给容器。
2. 常见标准系统异常
- EJBException :这个异常可以从bean方法内部抛出,用于告知容器发生了该方法无法恢复的异常。如果方法接收到这个异常,应按