Fehlerbehandlung
Ausgelöste Fehler sind eine gute Sache! Sie bedeuten, dass die Runtime erfolgreich erkannt hat, wann etwas in Ihrem Programm schiefgelaufen ist. Sie informiert Sie durch Anhalten der Funktionsausführung im aktuellen Stack, Beenden des Prozesses (in Node) und eine Konsolenmeldung mit Stacktrace.
Ignorieren Sie abgefangene Fehler nicht
Durch Nichtbehandlung abgefangener Fehler verlieren Sie die Möglichkeit zur Problembehebung. Das bloße Protokollieren mit console.log ist unzureichend, da solche Meldungen leicht in der Konsolenausflut untergehen. Wenn Sie Code in try/catch-Blöcke kapseln, impliziert dies Ihre Erwartung potenzieller Fehler – daher benötigen Sie entweder einen Behandlungsplan oder alternativen Codepfad für den Fehlerfall.
Schlecht:
try {
functionThatMightThrow();
} catch (error) {
console.log(error);
}Gut:
try {
functionThatMightThrow();
} catch (error) {
// One option (more noisy than console.log):
console.error(error);
// Another option:
notifyUserOfError(error);
// Another option:
reportErrorToService(error);
// OR do all three!
}Ignorieren Sie abgelehnte Promises nicht
Aus demselben Grund wie bei nicht ignorierten Fehlern aus try/catch-Blöcken
Schlecht:
getdata()
.then(data => {
functionThatMightThrow(data);
})
.catch(error => {
console.log(error);
});Gut:
getdata()
.then(data => {
functionThatMightThrow(data);
})
.catch(error => {
// One option (more noisy than console.log):
console.error(error);
// Another option:
notifyUserOfError(error);
// Another option:
reportErrorToService(error);
// OR do all three!
});