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?
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. –