6.2.5.2. パラメーターによる例外メッセージのカスタマイズ
例外を定義する例外バンドルメソッドでは、パラメーターを指定して例外メッセージに表示される追加情報を渡すことが可能です。例外メッセージでパラメーターが表示される場所は、明示的なインデクシングか通常のインデクシングを使用してメッセージ自体に指定されます。
次の手順は、メソッドパラメーターを使用してメソッド例外をカスタマイズするために必要な手順を示しています。
手順6.11 パラメーターを使用して例外メッセージをカスタマイズする
メソッド定義にパラメーターを追加する
任意のタイプのパラメーターをメソッド定義に追加できます。型に関係なくパラメーターのString
表現がメッセージに表示されます。例外メッセージにパラメーター参照を追加します
参照は明示的なインデックスまたは通常のインデックスを使用できます。- 通常のインデックスを使用するには、各パラメーターを表示したいメッセージ文字列に
%s
文字を挿入します。%s
の最初のインスタンスにより最初のパラメーターが挿入され、2 番目のインスタンスにより 2 番目のパラメーターが挿入されます。 - 明示的なインデックスを使用するには、文字
%{#$}s
をメッセージに挿入します。ここで、#
は表示したいパラメーターの数を示します。
明示的なインデックスを使用すると、メッセージのパラメーター参照の順番がメソッドで定義される順番とは異なるようになります。これは、パラメーターの異なる順序を必要とする可能性のある翻訳されたメッセージにとって重要です。
重要
指定されたメッセージでは、パラメーターの数とパラメーターへの参照の数が同じでなければなりません。同じでないとコードがコンパイルされません。
@Cause
アノテーションが付けられたパラメーターはパラメーターの数には含まれません。
例6.4 通常のインデックスを使用する
@Message(id=2, value="Customer query failed, customerid:%s, user:%s") void customerLookupFailed(Long customerid, String username);
例6.5 明示的なインデックスの使用
@Message(id=2, value="Customer query failed, user:%2$s, customerid:%1$s") void customerLookupFailed(Long customerid, String username);