Fangen Sie mehrere Arten von Fehlern in Javascript ab [Duplikat]
Aug 16 2020
Wenn ich benutzerdefinierte Fehlerklassen wie folgt definiere:
class MyCustom Error extends Error{ }
Wie kann ich mehrere Fehler wie diesen abfangen:
try{
if(something)
throw MyCustomError();
if(something_else)
throw Error('lalala');
}catch(MyCustomError err){
}catch(err){
}
?
Der obige Code funktioniert nicht und gibt einen Syntaxfehler aus
Antworten
1 TheOtterlord Aug 16 2020 at 15:37
In den MDN-Dokumenten wird empfohlen, einen if/else
Block in der catch
Anweisung zu verwenden. Dies liegt daran, dass es nicht möglich ist, mehrere catch
Anweisungen zu haben , und Sie auf diese Weise keine bestimmten Fehler abfangen können.
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 Aug 16 2020 at 15:38
JavaScript ist schwach typisiert. Verwenden Sie if (err instanceof MyCustomError)
innerhalb der catch-Klausel.