JavaScript - 7.7 Gérer les erreurs avec try et catch
Une fonction reçoit parfois une valeur qui n'a pas de sens, comme null au lieu d'un texte. Pour éviter une erreur difficile à comprendre, on vérifie les valeurs au début de la fonction. Quand une erreur doit être signalée, on la lève avec throw, puis on la rattrape avec try et catch.
Vérifier les valeurs au début de la fonction
Une méthode qui utilise split attend une chaîne de caractères. Si la valeur reçue est null ou undefined, l'erreur affichée ne décrit pas le vrai problème.
Cette approche s'appelle la programmation défensive. On vérifie le type de la valeur avec typeof, puis on quitte la fonction avec return si la valeur n'est pas valide.
if (typeof valeur !== 'string') {
return;
}
Lever une exception avec throw
Parfois, il faut signaler l'erreur au lieu de quitter la fonction en silence. On crée un objet Error avec un message, puis on le lève avec throw.
Un objet Error est un simple objet JavaScript. On parle d'exception au moment où on le lève, pour une situation qui n'aurait pas dû se produire. Les lignes suivantes ne sont alors pas exécutées.
throw new Error("La valeur n’est pas une chaîne");
Rattraper l'erreur avec try et catch
Le code qui peut lever une exception est placé dans un bloc try. Le bloc catch reçoit l'objet d'erreur et permet d'y réagir.
Dans la vidéo, le message est affiché avec alert. Ce n'est qu'une solution provisoire : une vraie interface affichera un message d'erreur dans la page, sujet d'une leçon future.
try {
// code qui peut lever une exception
} catch (erreur) {
alert(erreur.message);
}
Vérifier qu'il y a un prénom et un nom
Une chaîne vide ne contient ni prénom ni nom. On découpe donc la chaîne avec split, et on vérifie que le tableau obtenu contient exactement deux éléments.
Si ce n'est pas le cas, on lève une exception avec le message « Saisissez un prénom et un nom ». Le bloc catch affiche alors ce message à l'utilisateur.
En résumé
Vérifier les valeurs au début d'une fonction évite des erreurs peu lisibles. Lorsqu'une erreur doit être signalée, throw lève une exception et try et catch la rattrapent. Cette méthode permet de contrôler le déroulement du programme face à une donnée invalide. L'affichage de l'erreur dans l'interface sera vu plus tard.
Points clés
- Vérifier les valeurs reçues au début d'une fonction s'appelle la programmation défensive.
- typeof permet de contrôler le type d'une valeur.
- throw lève une exception à partir d'un objet Error.
- Le bloc try contient le code à surveiller, le bloc catch réagit à l'erreur.
- Après un throw, les lignes suivantes de la fonction ne sont pas exécutées.
Questions fréquentes
Pourquoi vérifier les valeurs si le code fonctionne sans cela ?
Une valeur inattendue, comme null, provoque une erreur difficile à comprendre. Une vérification au début de la fonction rend le problème plus clair.
Quelle est la différence entre une erreur et une exception ?
Un objet Error est un simple objet JavaScript. On parle d'exception au moment où on le lève avec throw.
Faut-il afficher les erreurs avec alert ?
Le formateur précise que ce n'est pas la bonne méthode pour un site réel. Un message d'erreur doit s'afficher dans l'interface.