Et dans la leçon d'aujourd'hui, nous allons apprendre les exceptions. Quelles sont les exceptions ? Eh bien, ce sont des événements exceptionnels. C'est un événement qui se produit lors de l'exécution d'un programme. Et ce qu'il fait, c'est qu'il perturbe le déroulement normal des instructions du programme. Et lorsque cette erreur se produit à l'intérieur d'une méthode, la méthode crée un objet, et le transmet au système d'exécution. Cet objet, appelé objet d'exception, contient des informations sur l'erreur, y compris le type et l'état du programme lorsque l'erreur s'est produite. création d'un objet d'exception et de le transmettre au système d'exécution, est connu comme levant l'exception. Dans les vieux jours, le programme produirait un vidage système de sa mémoire. Maintenant, après qu'une méthode lève une exception, le système d'exécution essaie de trouver quelque chose pour le gérer. L'ensemble des éléments possibles pour gérer l'exception, est la liste ordonnée des méthodes qui ont été appelées, pour obtenir la méthode où l'erreur s'est produite. Pourquoi utilisons-nous des exceptions ? Eh bien, ce que nous voulons faire, c'est séparer le code de gestion des erreurs du code régulier. Les exceptions nous permettent de séparer les détails de ce qu'il faut faire quand quelque chose d'inhabituel se produit, et nous séparons cela de la logique principale d'un programme. Cela rend notre code beaucoup plus facile à lire. Les types d'exceptions incluent ce qui se passe si le fichier nous essayons d'ouvrir, ne peut pas être ouvert ? Que se passe-t-il si la longueur d'un fichier ne peut pas être déterminée ? Que se passe-t-il s'il n'y a pas assez de mémoire à allouer ? Que se passe-t-il si une lecture échoue ? Que se passe-t-il si le fichier ne peut pas être fermé ? Sans exception, nous aurions à mélanger le code de gestion des erreurs avec le code qui exécute réellement la logique du programme. Donc on ouvre le fichier, si le fichier s'ouvre, nous déterminons ensuite la longueur du fichier. Si la longueur du fichier est bonne, puis nous allouons autant de mémoire. Si nous avons assez de mémoire, alors nous lisons le fichier. Comme vous pouvez le voir, il y a tellement de détection d'erreurs à l'intérieur du code, que le code devient long, et difficile à suivre, avec une série d'instructions if imbriquées. Lorsqu'il y a autant d'erreurs de vérification dans le code, on perd la trace du flux logique du code, et cela rend le débogage difficile, et comprendre exactement ce que fait le code. Nous pouvons regrouper et différencier les types d'erreurs, et parce que toutes les exceptions lancées dans un programme sont des objets, le regroupement devient facile, et c'est un résultat naturel de la hiérarchie des classes sur lesquels Java s'est construit. Une méthode peut intercepter une exception en fonction de son groupe, ou de type général, en spécifiant l'une des exceptions super classes dans l'instruction catch. Et nous examinerons ensuite l'instruction try catch . Mais les gestionnaires d'exceptions doivent être aussi spécifiques que possible. Déterminer le type d'exception, avant de décider de la meilleure stratégie de récupération. En ne détectant pas d'erreurs spécifiques, les gestionnaires doivent tenir compte de toute possibilité. Et si nous avons des gestionnaires d'exceptions trop généraux, cela peut rendre le code plus sujet aux erreurs, en interceptant et en gérant les exceptions qui n'avaient pas été anticipés par le programmeur, et pour cela le gestionnaire n'était pas destiné. Une exception est une sorte d'événement. Il se produit pendant l'exécution du programme, et il arrête le déroulement normal du programme. Lorsque l'erreur se produit, la méthode crée un objet, et le transmet au système d'exécution. Il y a beaucoup de choses qui se passent dans les coulisses, mais nous pouvons gérer ces exceptions, et produire une sortie qui explique ce qui se passe. Maintenant, il y a un tas d'exceptions différentes possibles, et nous pouvons gérer chacun d'entre eux, et ce que nous allons voir, est de savoir comment gérer l'exception dont nous savons qu'elle peut se produire. Les exceptions peuvent séparer les détails de ce qu'il faut faire quand quelque chose d'inhabituel se produit, et cela le maintient à l'écart de la logique principale du programme. Et parce que toutes ces exceptions sont des objets, nous pouvons les regrouper ou les catégoriser, afin qu'ils aient un sens. Lorsque nous écrivons ces exceptions, nous voulons être aussi précis que possible. Et regardons exactement de quoi je parle. Je vais défiler vers le bas, et voici notre programme. C'est un programme simple, je crée un entier, appelé diviser par zéro, et je l'ai mis égal à zéro. Ensuite, j'ai un bloc try catch, commençant à la ligne 45. L'idée ici est qu'avant de diviser par zéro, ça va tester pour voir si la division va fonctionner. S'il y a une exception arithmétique, il imprimera l'exception arithmétique, et un message de ce que j'essayais de faire. Et puis un bloc finally qui dit, cela arrivera quoi qu'il arrive. Exécutons ce programme et voyons ce qui se passe. Maintenant, la première fois que je l'ai exécuté, je l'ai parfaitement fonctionné, parce que ma division par zéro est cinq divisé par un. Ce qui se passe, c'est que si je change le un en zéro, et j'essaie de diviser par zéro, c'est la ligne de code cela va générer l'exception. Le programme va essayer de faire la division. Lorsque l'exception se produit, il attrape cette exception arithmétique, puis imprime le message. Exécutons-le et voyons ce qui se passe. Nous avons essayé de diviser par zéro, cinq divisé par zéro. Le programme a détecté notre erreur et a dit : l'exception arithmétique par zéro est le problème. Et enfin, le bloc de code est toujours exécuté, et la variable de division par zéro n'a pas été modifiée. Ce qu'il est important de savoir ici, est que le programme s'est terminé avec succès, et l'impression est la chose qui doit être revue pour voir ce qui aurait pu mal tourner. Vous savez maintenant comment gérer les exceptions avant qu'ils ne causent un problème dans votre programme.