Perché si getta su un metodo parte della sua firma. Sembra strano includerlo. Ecco un esempio in cui è nel modo.Perché viene lanciata una parte della firma del metodo
@Overide
public void foo() {
throw new UnsupportedOperationException();
}
Se qualcuno da cui vedere questo metodo dall'esterno potrebbe provare a utilizzarlo senza sapere che non è supportato. Lo imparerebbero solo cercando di eseguire il codice.
Tuttavia, se fossero in grado di fare qualcosa del genere, lo saprebbero osservando il metodo che non è supportato e se UnsupportedOperationException non sta estendendo RuntimeException otterrebbero un errore di compilazione. EDIT1: Ma questo non è possibile perché i lanci sono parte della firma, quindi l'override non funzionerà.
@Overide
public void foo() throws UnsupportedOperationException {
throw new UnsupportedOperationException();
}
Questa domanda riguarda il design Javas quindi so che potrebbe essere difficile rispondere senza una delle persone che lavorano su di esso scende di e rispondono, ma speravo che forse questa domanda è stato chiesto a loro prima o che potrebbe esserci una ragione ovvia per averlo in questo modo per spiegare il perché.
Sembra che tu stia rispondendo alla tua stessa domanda qui? È sulla firma perché ora tu (e il compilatore) sai che il codice genererà l'eccezione e che deve essere gestita? – Erik
Eccezioni non controllate e le condizioni in cui vengono generate devono essere documentate in javadoc. Questo paradigma viene utilizzato nelle librerie Java integrate ed è suggerito da più libri, ad es. Efficace Java per nominarne uno. Dichiararli nella firma è, come hai giustamente notato, non richiesto dal compilatore. – Danstahr
Quello che stai chiedendo è se lanciare o meno un'eccezione non controllata. Per iniziare il tuo metodo usa '@ Override' che indica che dovrebbe seguire il contratto (astratto o interfaccia) ma per le eccezioni non controllate non sei obbligato a farlo. Sia che tu scelga di lanciarlo o meno, segui sempre la buona pratica come menzionato da @danstahr, aggiungila alla javadoc. –