Asserire parole chiave in java




jupiter expected exception (4)

Per essere precisi sulla tua domanda:

Assert viene utilizzato per convalidare la condizione di una dichiarazione.

assert (some condition)
Example : assert (6 < 7) // condition pass
          assert (6 > 7) // throws AssertionException here

La maggior parte delle persone usa asser per il seguente caso d'uso per String: (Ma personalmente odio usare assert per questo):

assert (obj != null || obj.isEmpty() || ... )

Mi piace piuttosto usare google guava che è pulito e serve allo scopo:

Obj.isNullOrEmpty()

Maggiori informazioni: http://docs.guava-libraries.googlecode.com/git/javadoc/com/google/common/base/Strings.html

Utilizzi questa parola chiave o lanci qualche eccezione di runtime di validazione? Quali benefici ti dà o perché pensi che non valga la pena di usarlo?


Assert genererà un errore di runtime ( AssertionError ) se la sua condizione è falsa. Gli avvertimenti offrono un modo semplificato di documentare, verificare e applicare i criteri di correttezza del codice. I vantaggi sono un aggancio a livello linguistico per definire e manipolare queste condizioni di correttezza. Nella misura in cui desideri abilitarli o disabilitarli (ci sono argomenti riguardo al fatto che questa sia o meno una buona idea) puoi farlo dalla riga di comando di JVM. Alcuni commentatori sottostanti notano che le asserzioni sono disabilitate di default a meno che non si esegua in modalità debug; la mia pratica è di aggiungere "-ea" (abilita asserzioni) nei miei script di wrapper in ogni momento. Anche nel codice sensibile alle prestazioni, per me il tradeoff pesa a favore della sicurezza / correttezza che ottengo dalle asserzioni. Asserzioni su Oracle e AssertionError

Notare la distinzione tra guasti attesi o imprevisti (eccezioni), che possono essere al di fuori del controllo e errori di asserzione - errori di asserzione presupposti del programmatore del documento e indicare un programma errato piuttosto che una condizione esterna imprevista o condizione eccezionale prevista. Se si verifica un errore di asserzione, l'interpretazione è che il programmatore ha frainteso o espresso erroneamente il programma , piuttosto che altre fonti di errore o fallimento.

In pratica, lo uso per documentare ipotesi ovvie o non ovvie che faccio e invarianti che voglio far valere mentre produco codice (in particolare privato / interno), chiarendo a me stesso e agli altri perché queste ipotesi sono fatte, dove sono fatto e se sono convalidati o meno. Molto meglio dei commenti allo stesso effetto. Questo è un (piccolo) passo verso la progettazione per contratto .

L'efficace articolo n. 38 "Verifica i parametri di validità" ( Google Books , Amazon.com ) offre un'utile presentazione della distinzione tra il controllo dei parametri e l'uso appropriato delle asserzioni.

Relativo a SO: ( Abilitazione delle asserzioni in netbeans ), ( Asserzioni contro Eccezioni ), ( Quasi duplicato, richiesta di esempi ), ( Contenuto con un nome sbagliato, ma molto simile )


andersoj è corretto. Solo per farvi sapere, la cosa grandiosa dell'asserzione è che potete semplicemente disattivarlo (se non passate -ea nella riga di comando di java). Questa semplice cosa li rende perfetti per l'uso in fase di sviluppo, quando vuoi essere sicuro di non infrangere il tuo codice.


puoi usarlo per abilitare qualcosa durante dev, quindi disabilitarlo completamente sul sito live. per esempio

...
assert debug("xxx");
...

static boolean debug(String format, Object... args){ print(...); return true; }

l'istruzione debug aggiungerà zero overhead sul sito live.







assert