2011-10-10 18 views
5

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?

+0

Che ne dici di provarlo e vedere se funziona? SO è generalmente per domande concrete su problemi concreti, piuttosto che riflessioni oziose su what-ifs. –

risposta

0

Mi piace. La tua altra opzione sarebbe quella di formattare la stringa e utilizzare il normale costruttore Exception, ma penso che quello che hai va bene.

0

Sicuro. Se sono presenti parametri/campi aggiuntivi nella classe di eccezioni personalizzata, sarà più semplice valutare un problema se viene generata un'eccezione, aggiungere.

Problemi correlati