On va surtout utiliser Exception et Runtime Exception, mais pas
directement (on va plus tot utiliser des exceptions dérivées de ceux-là,
tel que NullPointerException ou IllegalArgumentException).
Par défault, le comportement d’une exception est de print l’erreur dans
la console, cependant on ne va pas tellement l’utiliser en cours car on
va utiliser un système de logging plus élaboré.
Try - catch
Les try-catch permettent d’exécuer son propre code dans le cas d’une
erreur.
Réexécution de fonction
Si on veut réexécuter une fonction il vaut mieux éviter de rappeller
simplement la fonction récursivement dans le catch car si une erreur
persiste, cela augmente grandement le stack des fonctions appellée ce
qui peut mener à faire crash le programme.
Il vaut mieux utiliser un do-while
Throw - throws
On peut créer nos propre exceptions pour des cas particulier de nos
programmes en étendant la classe Exception puis en utilisant throw new
pour l’appeller.
Finally
Lorsque l’on veut qu’un code s’exécute quoi qu’il arrive, on peut
utiliser le bloc finally, ainsi même si l’un des catch retourne une
exception, on exécutera quand même le bloc finally.
Tester les exceptions
On peut également tester des exceptions avec assertThrows
On passe directement la méthode à assertThrows. La syntaxe étrange
s’appelle une lambda, c’est une fonction anonyme temporaire qui exécute
la méthode à tester. Cette lambda est nécessaire, sinon on passe le
résultat de maMethode à la place de passer la méthode elle même. La
fonction assertThrows va ensuite tester pour voir si une exeception est
émise par la méthode, et si oui, elle va tester que l’exception est bien
de la classe RunTimeException.