Parfois nos fonctions vont recevoir des paramètres qui ne conviennent pas et il faudra être capable de renvoyer une erreur quand cela arrive. Il est possible de renvoyer une erreur à l'aide de l'opérateur throw
.
function setNotes (notes) {
if (!Array.isArray()) {
throw new Error('Les notes doivent être un tableau')
}
this.notes = notes
}
L'objet Error
sera construit avec une chaine de caractères qui permettra de décrire la raison de l'erreur. On pourra aussi lui passer un objet en second argument qui contiendra une propriété cause
qui permettra de donner plus d'informations sur la cause de l'erreur.
Le throw va faire remonter l'erreur et bloquer le script si elle n'est pas capturée. Il est possible de capturer les erreurs en utilisant le try...catch
try {
// du code qui peut renvoyer des erreurs
} catch (e) {
// Ce code sera éxécuté si il y a eu une erreur
}
Il est possible de re-envoyer une erreur et d'utiliser la cause pour conserver la cause originale du problème
try {
// du code qui peut renvoyer des erreurs
// a plusieurs endroits
} catch (e) {
throw new Error("Impossible de faire l'action", {cause: e})
}
Vous pouvez aussi créer des classes d'erreur personnalisées pour pouvoir les identifier par la suite
class PromptError extends Error{
constructor(originalPrompt) {
super(, {cause: originalPrompt})
}
}
On peut ensuite utiliser cette erreur à la place de la classe Error
function promptInt (msg) {
const n = prompt(msg) * 1
if (Number.isNaN(n)) {
throw new PromptError("Le nombre n'est pas valide", {cause: msg})
}
return n
}