Java e le asserzioni

Java e le asserzioni

Molti le nominano, pochi le usano, meno le conoscono.
Eppure sono moderatamente utili e molto semplici da usare…
In java una assert è un’affermazione che il programmatore fa in un certo punto del codice da lui scritto.. Il compilatore si occupa di verificare che tale affermazione sia corretta, in caso contrario lancia un’eccezione di tipo unchecked. E’ decisamente opportuno disabilitarle in fase di produzione del sistema, mentre possono essere utili in fase di sviluppo e test.

Come si dichiarano?
In 2 modi diversi:
assert <boolean expression>;
assert <boolean expression>: <message expression>;

Se ad esempio, in una nostra classe stiamo calcolando la velocità come spazio/tempo, potremmo scrivere:
assert spazio > 0;
assert tempo > 0: "Il tempo non è un numero positivo!" + tempo;

Come si abilitano?
Per default le asserzioni sono disabilitate.
Bisogna quindi esplicitamente abilitarle. Ecco come fare:
>java -ea
In questo modo abilitiamo l’uso delle asserzioni nella nostra classe e in tutte le sue dipendenze, ma non nelle classi di sistema (quelle caricate direttamente dalla JVM). Per abilitare anche quelle ci tocca scrivere:
>java -esa

L’errore più clamoroso che si possa commettere nell’uso di una assert è quello di confonderla con la gestione delle eccezzioni!