A mio parere, il costruttore di Exception
non deve accettare un parametro di messaggio stringa né alcun altro tipo di identificatore che rappresenta il messaggio. Il messaggio è il nome del tipo di eccezione .
Nei miei progetti per comodità uso un'eccezione che chiamo GenericException
che accetta un messaggio di stringa, ma l'intento è di sostituirlo con un tipo di eccezione specifico, creato appositamente per questo scopo, prima della distribuzione, idealmente prima commit codice sorgente.
Quello che puoi fare è avere un dizionario in cui la chiave è un tipo di eccezione e il valore è il messaggio corrispondente. Puoi anche utilizzare la formattazione nel messaggio e utilizzare reflection per recuperare i valori dei membri dell'eccezione e passarli alla funzione String.Format, in modo da rendere i tuoi messaggi più ricchi.
Quindi, nel tuo caso dovresti definire un ConditionNotMetException
, derivato da System.Exception
. Se non hai altre informazioni da passarci, lasciatelo come una classe vuota. In alternativa, potresti voler includere alcuni membri, contenenti informazioni aggiuntive sulla condizione che non è stata soddisfatta, perché non è stata soddisfatta, ecc.
Tuttavia, questi membri dovrebbero essere solo valori non elaborati, non dovrebbero essere elaborati in messaggi stringa dall'eccezione. Ad esempio, se hai un'eccezione chiamata DateOutOfRangeException
potresti voler includere in essa campi 3 DateTime
: uno per la data che risulta essere fuori intervallo e altri due per definire l'intervallo. Quindi, è responsabilità dell'applicazione presentare all'utente un messaggio significativo contenente queste tre date.