2011-10-10 74 views
5

我想知道在一個構造函數中創建一個帶有多個參數的異常(不同於throwable,字符串),還是這種做法不好?在構造函數中有多個參數的異常

爲什麼我需要一個帶有多個參數的異常,好吧,我們假設我正在分析一個矩陣,當出現錯誤時,我會用該位置引發異常。我想在例外中給出一個明確的錯誤信息,並且我想使用國際化,也就是說,使用不同語言的消息。

例如,消息可以是:

有一個在4位的錯誤,5
HUBO未problema烯LA菲拉4 CON 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

如何試用它並查看它是否有效? SO通常是針對具體問題的具體問題,而不是對有關假設的閒置思考。 –

回答

0

我喜歡。你的其他選擇是格式化字符串並使用正常的構造函數,但我認爲你所擁有的很好。

0

當然。如果在自定義異常類中有其他參數/​​字段可以更容易地評估問題(如果拋出異常),請添加。