Comprendre ce qu'est une exception, l'intercepter avec try, catch et finally, lancer ses propres erreurs avec throw, et afficher un message clair à l'utilisateur.
1Situer
Un convertisseur de devises pour les touristes à Tanger reçoit parfois n'importe quoi : un montant vide, des lettres, un nombre négatif. Sans précaution, le script s'arrête au premier problème et la page ne répond plus. Une application sérieuse prévoit les erreurs et réagit proprement.
2Comprendre
try, catch, finally : le chemin de l'exécution
Le code risqué est dans try, la réaction à l'erreur dans catch, et finally s'exécute dans tous les cas.
1 / 6
Une exception, c’est quoi ?
Une exception est une erreur qui survient pendant l’exécution : une variable inexistante, une méthode appelée sur null, un JSON mal formé, une valeur refusée. Si personne ne l’intercepte, le script s’arrête.
Erreur courante
Cause
ReferenceError
variable ou fonction inconnue (faute de frappe)
TypeError
opération impossible sur cette valeur (null.length)
SyntaxError
code mal écrit, ou JSON.parse sur un texte invalide
RangeError
valeur hors limites ((5).toFixed(200))
try, catch, finally
try {
const dh =convertir(montant, devise); // peut échouerafficher(dh);
} catch (erreur) {
afficherMessage(erreur.message); // on réagit proprement
} finally {
console.log('Demande traitée'); // toujours exécuté
}
Lancer une exception
Une fonction qui reçoit une valeur impossible refuse de continuer :
functionconvertir(montant, devise) {
if (!(devise in taux)) thrownewError(`Devise inconnue : ${devise}`);
if (montant <=0) thrownewError('Montant invalide');
return (montant * taux[devise].valeur).toFixed(2);
}
L’appelant décide quoi faire : afficher un message, utiliser une valeur par défaut, réessayer.
Bonnes pratiques
des messages d’erreur compréhensibles pour l’utilisateur ;
un tryautour du code qui peut échouer, pas autour de tout le programme ;
ne jamais laisser un catch vide : au minimum console.error(erreur).
Exemple simple
Le filet de l'acrobate
L'acrobate tente son numéro (try). S'il tombe, le filet le rattrape (catch). À la fin, quoi qu'il arrive, il salue le public (finally).
Le caissier refuse un billet déchiré et le dit clairement. throw permet à une fonction de refuser une valeur invalide avec un message précis.
if (montant <= 0) {
throw new Error('Le montant doit être positif');
}
Publicité
3Manipuler
La fonction convertir() plante sur les mauvaises valeurs et arrête tout le script. Rendez-la robuste : chaque ligne de la liste doit s'afficher, avec un message d'erreur clair quand la valeur est invalide.
TypeError
(on ne peut pas appeler une méthode sur null: e.message contient
« Cannot read properties ofnull (reading 'toUpperCase') »)
Exercice 2 · JSON invalide
JSON.parse lance une exception si le texte n'est pas du JSON valide. Écrivez une fonction lireJSON(texte) qui renvoie l'objet, ou null en cas d'erreur.
Faut-il entourer tout le programme d'un seul try / catch ? Expliquez.
Voir le corrigé
Non. On entoure seulement le code qui peut échouer et que l'on sait traiter
(une saisie, une conversion, un appel au serveur), pour réagir précisément :
message à l'utilisateur, valeur par défaut, nouvel essai. Un try géant cache
les vraies erreurs de programmation.