Die Verwendung von "Async/Await" in Node.js dient dazu, asynchrone Abläufe leicht lesbar zu gestalten. In dieser Syntax können Promises entweder erfüllt oder abgelehnt werden. Es ist wichtig, eine effektive Methode für die Behandlung dieser abgelehnten Promises zu haben. Die Frage bezieht sich auf zwei solcher Methoden - die Verwendung eines try/catch-Blocks und process.on('unhandledRejection', handler).
Die Verwendung eines try/catch-Blocks ist eine effektive Methode, um abgelehnte Promises zu behandeln. In der Async/Await-Syntax wird das Promise innerhalb des "try"-Segments des Blocks ausgeführt. Wenn das Promise erfüllt wird, kann der Code normal weiterlaufen. Sollte das Promise jedoch abgelehnt werden, wird ein Fehler geworfen und der "catch"-Teil des Blocks tritt in Aktion. Hier ist ein Beispielcode:
async function abgelehntesPromise() {
try {
let ergebnis = await Promise.reject(new Error("Promise abgelehnt!"));
}
catch (error) {
console.error(error); // "Promise abgelehnt!"
}
}
abgelehntesPromise();
In diesem Beispiel wird das Promise abgelehnt und wirft einen Fehler. Der try/catch-Block fängt diesen Fehler auf und gibt die entsprechende Fehlermeldung aus.
Die process.on-Methode ist eine weitere effektive Möglichkeit, abgelehnte Promises in der Node.js Async/Await-Syntax zu behandeln. Wenn ein Promise abgelehnt wird und es keinen Code gibt, der diesen abgelehnten Zustand bearbeitet, kann man process.on verwenden, um einen "unhandledRejection"-Handler hinzuzufügen. Dieser Handler wird aufgerufen, wenn ein Promise abgelehnt wird, ohne dass ein Fehlerbehandlungsmechanismus vorhanden ist. Hier ist ein Beispiel:
process.on('unhandledRejection', (reason, promise) => {
console.log('Unhandled Rejection at:', promise, 'reason:', reason);
// Hier können Sie auch spezielle Cleanups oder weitere logische Schritte hinzufügen
});
Die Kombination beider Methoden stellt eine umfassende Abdeckung zur Behandlung von abgelehnten Promises dar. Es ist jedoch wichtig zu beachten, dass Sie sich immer bemühen sollten, spezifische Fehlerbehandlungsmechanismen zu schreiben, um unerwartetes Verhalten Ihrer Anwendung zu vermeiden. Use try/catch
blocks for specific promises and use process.on('unhandledRejection', handler)
for more overarching error handling. So wird sichergestellt, dass Ihr Code robust und fehlertolerant ist.