6.2.5. 国際化された例外のカスタマイズ
6.2.5.1. メッセージ ID とプロジェクトコードを例外メッセージに追加する
以下の手順は、JBoss ロギングツールを使用して作成された国際化済み例外メッセージにメッセージ ID とプロジェクトコードを追加するために必要な作業を示します。
メッセージ ID とプロジェクトコードは国際化された例外によって表示された各メッセージの前に付けられる固有の識別子です。これらの識別コードによってアプリケーションに対する全例外メッセージの参照を作成できるため、理解できない言語で書かれた例外メッセージの意味をルックアップすることが可能です。
要件
- 国際化された例外を持つプロジェクトが存在する必要があります。「国際化された例外の作成」を参照してください。
- 使用するプロジェクトコードを認識する必要があります。プロジェクトコードを 1 つ使用することも、各インターフェースに異なるコードを定義することも可能です。
手順6.10 メッセージ ID とプロジェクトコードを例外メッセージに追加する
プロジェクトコードの指定
例外バンドルインターフェースに付けられる@MessageBundle
アノテーションのprojectCode
属性を使用してプロジェクトコードを指定します。インターフェースに定義されるすべてのメッセージがこのプロジェクトコードを使用します。@MessageBundle(projectCode="ACCTS") interface ExceptionBundle { ExceptionBundle EXCEPTIONS = Messages.getBundle(ExceptionBundle.class); }
メッセージ ID の指定
例外を定義するメソッドに付けられる@Message
アノテーションのid
属性を使用して各例外に対してメッセージ ID を指定します。@Message(id=143, value = "The config file could not be opened.") IOException configFileAccessError();
重要
プロジェクトコードとメッセージ ID を両方持つメッセージでは、メッセージの前にプロジェクトコードとメッセージ ID が表示されます。プロジェクトコードとメッセージ ID の両方がない場合は、どちらも表示されません。
例6.3 国際化された例外の作成
この例外バンドルインターフェースは、プロジェクトコード ACCTS と ID が 143 の例外メソッドを 1 つ持っています。
@MessageBundle(projectCode="ACCTS") interface ExceptionBundle { ExceptionBundle EXCEPTIONS = Messages.getBundle(ExceptionBundle.class); @Message(id=143, value = "The config file could not be opened.") IOException configFileAccessError(); }
次のコードを使用して例外オブジェクトを取得したりスローしたりすることが可能です。
throw ExceptionBundle.EXCEPTIONS.configFileAccessError();
これにより、次のような例外メッセージが表示されます。
Exception in thread "main" java.io.IOException: ACCTS000143: The config file could not be opened. at com.company.accounts.Main.openCustomProperties(Main.java:78) at com.company.accounts.Main.go(Main.java:53) at com.company.accounts.Main.main(Main.java:43)