Attrapez plusieurs types d'erreurs dans javascript [dupliquer]
Si je définis des classes d'erreur personnalisées comme celle-ci:
class MyCustom Error extends Error{ }
Comment puis-je détecter plusieurs erreurs comme celle-ci:
try{
if(something)
throw MyCustomError();
if(something_else)
throw Error('lalala');
}catch(MyCustomError err){
}catch(err){
}
?
Le code ci-dessus ne fonctionne pas et donne une erreur de syntaxe
Réponses
1 TheOtterlord
La documentation MDN recommande d'utiliser un if/else
bloc à l'intérieur de l' catch
instruction. En effet, il est impossible d'avoir plusieurs catch
instructions et vous ne pouvez pas détecter des erreurs spécifiques de cette manière.
try {
myroutine(); // may throw three types of exceptions
} catch (e) {
if (e instanceof TypeError) {
// statements to handle TypeError exceptions
} else if (e instanceof RangeError) {
// statements to handle RangeError exceptions
} else if (e instanceof EvalError) {
// statements to handle EvalError exceptions
} else {
// statements to handle any unspecified exceptions
logMyErrors(e); // pass exception object to error handler
}
}
1 Hi-IloveSO
JavaScript est faiblement typé. À utiliser if (err instanceof MyCustomError)
dans la clause catch.