Les assertions en Java sont des bouts de code qui permettent au développeur de s'assurer d'une exécution correcte de son application.
L'utilisation des assertions se résume à des fragments de code qui, à priori, ne peuvent pas être incorrects. On peut s'imaginer la situation où l'on gère le nom du jour avec une instruction switch :
public class Assertions { public static void main(String[] args) { int day = 10; assert (day > 0 && day < 8) : "Incorrect value for dayName relationship"; String dayName = ""; switch(day) { case 1: dayName = "Monday"; break; case 2: dayName = "Tuesday"; break; case 3: dayName = "Wednesday"; break; case 4: dayName = "Thursday"; break; case 5: dayName = "Friday"; break; case 6: dayName = "Saturday"; break; case 7: dayName = "Sunday"; break; } System.out.println("Day name is " + dayName); } }
En lançant le code avec les paramètres -ea (java -ea NameOfMyClass; ea signifie -enableassertions), on reçoit une exception :
Exception in thread "main" java.lang.AssertionError: Incorrect value for dayName relationship
at Assertions.main(Assertions.java:7)
Grâce à cet exemple on a pu voir le syntaxe de l'expression assert qui se présente de la manière suivante :
assert boolean_test : string_result;
Si boolean_test est vrai, le code va s'exécuter normalement. Dans le cas contraire, une exception AssertionError sera captée.
On peut les comparer à la gestion des exceptions en Java car elles font à peu près la même chose. Cependant, il ne faut pas remplacer les exceptions par les assertions. Ces dernières ont plutôt vocation d'être utilisées dans le cycle de développement et de débogage.