BMPのEnterprise Beanクラスで記述する例外の種類には以下の2つがあります。
Enterprise Beanクラスに実装する各メソッドでは、以下の指針で例外処理を記述してください。
Application exceptions
Application exceptionsは、アプリケーションレベルの例外を通知する場合に使用します。ビジネスメソッドの入力引数が不正な値である場合や、createメソッド実行時に一意性制約違反が発生した場合など、アプリケーションのロジックで例外とする場合です。
Exception | 記述するメソッド | 指針 |
---|---|---|
javax.ejb.CreateException |
| createメソッドの引数が不正であるなどユーザロジックで例外を発生させる場合 |
javax.ejb.DuplicateKeyException |
| INSERTの実行で一意性制約違反が発生した場合 |
javax.ejb.FinderException |
| 単一の検索結果を返却するメソッドで検索結果が複数件の場合や、ユーザロジックで例外とする場合 |
javax.ejb.ObjectNotFoundException |
| 検索結果が0件の場合 (単一の検索結果を返却するメソッドの場合のみ、このexceptionを使用できます。) |
javax.ejb.RemoveException |
| ユーザロジックで例外とする場合 |
ユーザ例外 | 全メソッド | ユーザロジックで例外とする場合 |
System exceptions
System exceptionsは、アプリケーションで処理できないシステムレベルの例外を通知する場合に使用します。Application exceptions以外のデータベースのエラーや、他のEJBアプリケーションの呼出しから予期しないRemoteExceptionが返却された場合です。
Enterprise Beanクラスからjavax.ejb.EJBExceptionを返却すると、コンテナはjava.rmi.RemoteExceptionに変換して呼出し元に返却します。
Exception | 記述するメソッド | 指針 |
---|---|---|
javax.ejb.NoSuchEntityException |
| インスタンスに対応するデータがデータベースから削除されている場合 |
javax.ejb.EJBException | 全メソッド | NoSuchEntityException以外の場合 例えば、データベース操作文でエラーになった場合など |