ATTENZIONE!
Le asserzioni vengono rimosse in fase di runtime a meno che tu non specifichi esplicitamente di " abilitare le asserzioni "durante la compilazione del codice. Le asserzioni Java non devono essere utilizzate nel codice di produzione e devono essere limitate ai metodi privati (vedi Eccezioni contro asserzioni ), dal momento che i metodi privati dovrebbero essere conosciuti e utilizzati solo dagli sviluppatori. Anche assert
genererà AssertionError che estende Error
non Exception
, e che normalmente indica che c'è un errore molto anomalo (come "OutOfMemoryError" da cui è difficile recuperare, non è vero?) che non ci si aspetta che sia in grado di trattare.
Rimuovi il flag "enable assertions" e verifica con un debugger e vedrai che non eseguirai il passo sulla chiamata di lancio di IllegalArgumentException ... poiché questo codice non è stato compilato (di nuovo, quando "ea" viene rimosso )
È meglio usare la seconda costruzione per metodi pubblici / protetti, e se vuoi qualcosa che è fatto in una riga di codice, c'è almeno un modo che conosco. Io personalmente uso il Framework di Spring 's% co_de Classe% con alcuni metodi per il controllo degli argomenti e che genera "IllegalArgumentException" in caso di errore. Fondamentalmente, quello che fai è:
Assert.notNull(obj, "object was null");
... Che infatti eseguirà esattamente lo stesso codice che hai scritto nel tuo secondo esempio. Ci sono alcuni altri metodi utili come Assert
, hasText
in là.
Non mi piace scrivere più codice del necessario, quindi sono felice quando ridurrò il numero di righe scritte di 2 (2 righe > 1 riga): -)