ich benutzerdefinierte Fehler verwenden (es6-error) erlaubt mir Fehler wie so auf der Grundlage ihrer Klasse zu behandeln:Wie in einer switch-Anweisung verwenden Instanceof
import { DatabaseEntryNotFoundError, NotAllowedError } from 'customError';
function fooRoute(req, res) {
doSomethingAsync()
.then(() => {
// on resolve/success
return res.send(200);
})
.catch((error) => {
// on reject/failure
if (error instanceof DatabaseEntryNotFoundError) {
return res.send(404);
} else if (error instanceof NotAllowedError) {
return res.send(400);
}
log('Failed to do something async with an unspecified error: ', error);
return res.send(500);
};
}
Jetzt würde ich eher einen Schalter für diese Art von Strömungs verwenden in etwas, was wie:
import { DatabaseEntryNotFoundError, NotAllowedError } from 'customError';
function fooRoute(req, res) {
doSomethingAsync()
.then(() => {
// on resolve/success
return res.send(200);
})
.catch((error) => {
// on reject/failure
switch (error instanceof) {
case NotAllowedError:
return res.send(400);
case DatabaseEntryNotFoundError:
return res.send(404);
default:
log('Failed to do something async with an unspecified error: ', error);
return res.send(500);
}
});
}
instanceof nicht funktioniert jedoch ähnlich. Letzteres scheitert also.
Gibt es eine Möglichkeit, eine Instanz für ihre Klasse in einer switch-Anweisung zu überprüfen?
Ich mag das mehr als meine eigene Antwort. Auf diese Weise muss ich nicht gegen Strings überprüfen, sondern kann gegen das eigentliche Objekt prüfen. Ich bin mir aber nicht sicher, was aus technischer Sicht sinnvoller wäre. – AlexTes
Es ist einfacher, die Konstruktorfunktion als ihren Namen zu schreiben: die automatische Vervollständigung :). –