2011-10-10 6 views
5

Chciałbym wiedzieć, czy można utworzyć wyjątek z wieloma parametrami w jednym konstruktorze (innym niż throwable, string) lub czy ta praktyka jest zła?Wyjątek z wieloma parametrami w konstruktorze

Dlaczego potrzebuję wyjątku z wieloma parametrami, dobrze, załóżmy, że analizuję matrycę, a gdy wystąpi błąd, zgłoszę wyjątek z pozycją. Chciałbym dać wyraźny komunikat o błędzie w wyjątku, a także chciałbym skorzystać z internacjonalizacji, czyli wiadomości w różnych językach.

Na przykład, komunikaty mogą być:

wystąpił błąd w pozycji 4, 5.
Hubo un problema en la fila 4 con columna 5.

jak ty widać, tekst jest inny dla obu wiadomości, a wartości są ważne dla wiadomości, aby mogły być opisowe.

Moje podejście jest mniej więcej tak:

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"); 
} 
} 

(Klasa Messages implementuje klasę ResourceBundle)

Z tego rodzaju wyjątku mogę utworzyć wiadomość opisowego w odpowiednim języku, jednak ja Nigdy nie widziałem wyjątków o parametrach innych niż String i Throwable.

Próbowałem znaleźć informacje o tym, jak napisać dobrze zdefiniowaną hierarchię wyjątków, ale nie ma zbyt wiele dokumentacji i nic na temat konstruktorów.

Co sądzisz o moim podejściu?

+0

Co powiesz na wypróbowanie i sprawdzenie, czy to działa? Zasadniczo jest to konkretne pytanie dotyczące konkretnych problemów, a nie leniwe rozważania na temat tego, co. –

Odpowiedz

0

Podoba mi się. Inną opcją byłoby sformatowanie ciągu znaków i użycie zwykłego konstruktora Exception, ale myślę, że to, co masz, jest w porządku.

0

Pewnie. Jeśli dodatkowe parametry/pola w niestandardowej klasie wyjątków ułatwią ocenę problemu, jeśli wyjątek zostanie zgłoszony, dodaj go.