2011-10-10 7 views
5

1つのコンストラクタ(throwable、stringとは異なる)で複数のパラメータを使用して例外を作成するか、このプラクティスが悪いかどうかを知りたいですか?コンストラクタ内の複数のパラメータを持つ例外

複数のパラメータで例外が必要なのはなぜですか、よく行列を解析しているとしましょう。エラーがある場合は、その位置で例外を発生させます。例外で明確なエラーメッセージを表示したいと思います。また、国際化、つまり異なる言語のメッセージを使用したいと思います。例えば

、メッセージは次のようになります。

4位の誤差がありますが、あなたとして5
Hubo解除problemaエン・ラ・FILA 4コンcolumna 5.

両方のメッセージでテキストが異なり、値は説明的であるためにメッセージにとって重要です。

私のアプローチは、このようなものです:

public class MatrixException extends Exception { 
    int x; 
    int y; 
    public MatrixException (int x, int y){ 
    this.x = x; 
    this.y = y; 
} 
public String getMessage(){ 
    return Messages.getString("MatrixException.Message1") + this.x 
     Messages.getString("MatrixException.Message2") + this.y 
     Messages.getString("MatrixException.Message3"); 
} 
} 

MessagesクラスはResourceBundleクラスを実装)

例外のこの種では、私は私がしかし、対応する言語で記述メッセージを作成することができますStringとThrowableと異なるパラメータを持つ例外は見たことがありません。

よく定義された例外階層を記述する方法についての情報を見つけようとしましたが、多くのドキュメントはなく、コンストラクタについては何もありません。

私のアプローチについてどう思いますか?

+0

それを試して、それが動作するかどうかを見てみましょうか?一般的には、何が起ころうとしているかについての空想的な問題ではなく、具体的な問題に関する具体的な質問のためです。 –

答えて

0

私はそれが好きです。あなたの他のオプションは、文字列をフォーマットし、通常のExceptionコンストラクタを使用することですが、あなたが持っているものは良いと思います。

0

カスタム例外クラスに追加のパラメータ/フィールドを追加すると、例外がスローされた場合に問題を簡単に評価できるようになります。