Vorrei sapere se è possibile creare un'eccezione con più parametri in un costruttore (diverso da gettare, stringa) o se questa pratica è errata?Eccezione con più parametri nel costruttore
Perché ho bisogno di un'eccezione con più parametri, beh, supponiamo di analizzare una matrice, e quando c'è un errore, solleverò un'eccezione con la posizione. Vorrei dare un messaggio di errore chiaro nell'eccezione, e vorrei anche usare l'internazionalizzazione, cioè messaggi in diverse lingue.
Ad esempio, i messaggi potrebbero essere:
C'è un errore nella posizione 4, 5.
Hubo un Problema en la fila 4 con Columna 5.
Come si può vedere, il testo è diverso per entrambi i messaggi e i valori sono importanti per il messaggio per essere descrittivi.
Il mio approccio è qualcosa di simile:
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");
}
}
(La classe Messages
implementa la classe ResourceBundle
)
Con questo tipo di eccezione, ho potuto creare un messaggio descrittivo nella lingua corrispondente, però io non ho mai visto eccezioni con parametri diversi da String e Throwable.
Ho cercato di trovare informazioni su come scrivere una gerarchia di eccezioni ben definita, ma non c'è molta documentazione e nulla sui costruttori.
Cosa ne pensi del mio approccio?
Che ne dici di provarlo e vedere se funziona? SO è generalmente per domande concrete su problemi concreti, piuttosto che riflessioni oziose su what-ifs. –