6.2.2.3. 国際化された例外の作成
このタスクでは、国際化された例外の作成方法と使用方法を示します。すべてのオプション機能またはこれらの例外の国際化プロセスについては取り上げません。
完全な例は
logging-tools
クイックスタートを参照してください。
このタスクでは、 JBoss Developer Studio または Maven に構築されたソフトウェアプロジェクトが既に存在し、このプロジェクトに国際化された例外を追加することを前提としています。
手順6.3 国際化された例外の作成と使用
JBoss ロギングツール設定の追加
JBoss ロギングツールをサポートするために必要なプロジェクト設定を追加します。「JBoss ロギングツールの Maven 設定」を参照してください。例外のインターフェースの作成
JBoss ロギングツールはインターフェースで国際化された例外を定義します。定義される例外に対し、インターフェースにその内容を表す名前を付けます。インターフェースの要件は次の通りです。public
として宣言される必要があります。@org.jboss.logging.MessageBundle
アノテーションが付けられていなければなりません。- インターフェースと同じ型のメッセージバンドルであるフィールドをインターフェースが定義する必要があります。
@MessageBundle(projectCode="") public interface ExceptionBundle { ExceptionBundle EXCEPTIONS = Messages.getBundle(ExceptionBundle.class); }
メソッド定義の追加
各例外のインターフェースにメソッド定義を追加します。例外に対する各メソッドにその内容を表す名前を付けます。各メソッドの要件は次の通りです。- 型
Exception
のオブジェクトまたはException
のサブタイプを返す必要があります。 @org.jboss.logging.Message
アノテーションが付いていなければなりません。- デフォルトの例外メッセージに
@org.jboss.logging.Message
の値属性が設定されていなければなりません。翻訳がない場合にこのメッセージが使用されます。 - メッセージ文字列の他にパラメータを必要とするコンストラクターが返された例外にある場合、
@Param
アノテーションを使用してこれらのパラメーターをメソッド定義に提供しなければなりません。パラメーターはコンストラクターと同じ型で同じ順番でなければなりません。
@Message(value = "The config file could not be opened.") IOException configFileAccessError(); @Message(id = 13230, value = "Date string '%s' was invalid.") ParseException dateWasInvalid(String dateString, @Param int errorOffset);
呼び出しメソッド
例外を取得する必要がある場所でコードのインターフェースメソッドを呼び出します。メソッドは例外をスローしませんが、スローできる例外オブジェクトを返します。try { propsInFile=new File(configname); props.load(new FileInputStream(propsInFile)); } catch(IOException ioex) //in case props file does not exist { throw ExceptionBundle.EXCEPTIONS.configFileAccessError(); }
結果: 現地語化できる国際化された例外をプロジェクトがサポートするようになります。