Originariamente inviato da Kaamos
E se il valore passato non è corretto cosa fa il tuo metodo?
Io sto solo contestando l'astrazione, set non mi dice che è in corso una validazione. Di più, la validazione è un concetto diverso dal set di una variabile, per il principio della separation of concerns dovrebbero stare su metodi differenti.

P.e. un form su una pagina web viene prima compilato e successivamente validato.

Le eccezioni esistono apposta: il valore non viene impostato (quindi l'oggetto non si trova in uno stato indefinito) e il chiamante sa di avere commesso un errore.
Si può usare una banalissima IllegalArgumentException.
L'eccezione esiste per gestire gli errori, qui gli stai demandando un compito di validazione che è cosa diversa.
Si possono usare le eccezioni per gestire la validazione, ma è un metodo tra i tanti che si possono usare e non sempre è il migliore.