Quali sono asserzioni in Java?

November 7

Java ha aggiunto la parola chiave "assert" per rendere più facile per rilevare e segnalare gli errori in Java 1.4. Le asserzioni permettono il programma per specificare una condizione che si aspetta di essere vero. Se la condizione di fallire, il programma segnala un errore che deve essere maneggiato.

Asserzione Sintassi

La sintassi per una affermazione è molto semplice:

affermare CODICE

Il codice deve valutare come sia vero o falso. Se fosse vero, allora il programma prosegue come al solito. Se false, allora un AssertionError è gettato. In questo modo, la parola chiave affermazione permette ai programmatori di fare affermazioni sullo stato del programma in punti specifici e identificare momenti in cui il programma passa in stati che non sono consentiti.

Quando utilizzare asserzioni

Le asserzioni devono essere utilizzati per controllare invarianti, o situazioni che il programmatore ritiene non potrà mai verificarsi. L'esempio che segue di una affermazione sullo stato di una moneta è un esempio di un invariante. Utilizzando affermazioni per controllare invarianti, i programmatori di realizzare due cose. In primo luogo, essi forniscono un modo per il programma di fallire se l'invariante risulta essere falsa a causa di corruzione della memoria. In secondo luogo, essi forniscono un modo chiaramente leggibile per il programmatore di mostrare altri programmatori le assunzioni che esistono nel suo codice.

I problemi

Il problema centrale con affermazioni si può far risalire al fatto che essi sono una funzione opzionale. Per una serie di ragioni, le macchine client possono scegliere di eseguire il programma con le affermazioni spenti. Ciò comporta una serie di effetti. Innanzitutto, il programmatore non può mettere qualsiasi codice in un presupposto che altera lo stato del programma, poiché il codice dovrebbe più essere eseguito se una asserzione fallita. In secondo luogo, il programmatore non può mai assumere che le asserzioni saranno valutate. Ciò significa che l'argomento verifica di metodi dovrebbe ancora essere eseguita utilizzando il vecchio sistema delle eccezioni, che non può mai essere disabilitata. Infine, dal momento che una nuova parola "asserzione" è stato aggiunto alla lingua, variabili nel vecchio codice non possono avere il nome "assert".

Asserzione Esempio

Si consideri il seguente codice:

affermare (moneta == TESTE || moneta == CODE);

Questo afferma che variabile denominata "moneta" deve essere uguale sia "testa" o "croce". Se si tiene un altro valore, il programma è in uno stato illegale e si verificherà l'errore di asserzione.