Introduction aux situations exceptionnelles en JavaScript
Maintenant, nous allons examiner les situations exceptionnelles en JavaScript. Pour commencer, je vais faire une introduction, qui contiendra des exemples de situations exceptionnelles en général pour tous les langages de programmation, puis nous verrons comment cela se passe en JavaScript.
Lorsque nous écrivons nos programmes, nous supposons implicitement que tous les mécanismes techniques et logiciels utilisés par nous fonctionneront correctement.
Cependant, ce n'est pas toujours le cas. Lors du transfert de données sur le réseau, la connexion est interrompue et les données nous parviennent sous une forme incorrecte, ou ne parviennent pas du tout. Lors de l'écriture d'un fichier, il s'avère que l'espace qui nous était alloué sur le disque dur est épuisé, et le fichier ne peut pas être écrit. Lors de la lecture d'un fichier, il s'avère que celui-ci n'existe pas et nous n'avons nulle part où lire. Lors de l'impression de données sur une imprimante, il y a une rupture du câble reliant l'imprimante et l'ordinateur.
Toutes les situations décrites ont une essence commune : il se produit une défaillance, qui conduit à l'impossibilité ou à l'absence de sens de terminer l'opération planifiée.
Il y a aussi des situations dans lesquelles se produit une certaine erreur, qui n'est pas une défaillance. Par exemple, vous demandez à l'utilisateur son email, et il saisit un email dans un format incorrect. Il est clair que notre programme ne peut pas continuer à traiter l'email, car il n'est pas correct. Mais, néanmoins, ce n'est pas une situation exceptionnelle. Notre programme peut lui-même corriger la situation : il affichera un message d'erreur et l'utilisateur répétera sa saisie.
En réalité, la différence entre une défaillance et une non-défaillance est très floue. Un événement qu'un programme peut interpréter comme une situation exceptionnelle, un autre programme peut l'interpréter comme une certaine erreur avec laquelle il peut composer.
Le critère ici est le suivant : si lors de l'apparition d'un problème votre programme peut continuer à exécuter ce pour quoi il est conçu, alors ce n'est pas une situation exceptionnelle, mais si il ne peut pas - alors oui, c'est une exception.
Par exemple, nous avons un programme qui doit demander l'email de l'utilisateur. Si l'utilisateur a saisi un email dans un format incorrect - ce n'est pas une défaillance. C'est un problème attendu et notre programme redemandera à l'utilisateur son email autant de fois qu'il le faudra jusqu'à ce qu'il le saisisse correctement.
Supposons que notre programme, qui demande l'email, doit également envoyer cet email correct via Internet. Il s'avère alors qu'Internet ne fonctionne pas. Voilà déjà un problème : le programme ne pourra en aucun cas envoyer les données via Internet si Internet ne fonctionne pas. Le programme peut néanmoins poursuivre son exécution : il peut afficher des informations sur le problème, réessayer l'envoi après un certain temps, et ainsi de suite. Mais ces actions ne sont plus tout à fait ce pour quoi le programme était conçu, car l'action principale - l'envoi de l'email - le programme ne pourra pas le faire.
Très souvent, le fait qu'une situation soit exceptionnelle ou non dépend du langage de programmation. Dans de nombreux langages, si soudainement une division par zéro se produit - c'est considéré comme une exception (car on ne peut pas diviser par zéro), mais en JavaScript - ce n'est pas le cas (en JavaScript, on peut diviser par zéro).