Ich bin nicht derjenige, der die Handler schreibt, ihre Logik kann variieren.
Handler können gleichzeitig ausgeführt werden.
Ich möchte, dass die Infrastruktur für Isolation sorgt, d. h. die Infrastruktur sollte sicherstellen, dass ein Fehler, ein Fehler auf Anwendungsebene, in einem Handler keine Auswirkungen auf andere Handler hat, die „gleichzeitig“ ausgeführt werden.
Derzeit habe ich umzingelt jeder Handler werden mit try-catch ausgeführt, aber es scheint, dass es viele Arten von Fehlern gibt, die, wenn sie auftreten, nicht in der Catch-Klausel abgefangen werden und somit den Dienst zum Absturz bringen (weil sie in einem anderen Kontext ausgeführt werden).
Ich gehe davon aus, dass man auf der Handler-Ebene den Handler so aufbauen kann, dass alle Fehler behandelt werden, und an vielen Stellen passiert genau das. Mein Problem ist, dass, wenn jemand „vergessen“ hat, den Fehler auf der Handler-Ebene zu behandeln, ich als Infra-Schicht diese Fehler nicht für ihn „abfangen“ kann, sodass ich keine Isolation erzwingen und sicherstellen kann, dass ein Fehler in einem Handler auftritt hat keine Auswirkungen auf andere.
Wie wird mit Typoskript mit einem solchen Fall umgegangen?
Ein Code zur Veranschaulichung des Problems ist (vorausgesetzt, er befindet sich in einer asynchronen Funktion):
Code: Select all
try {
await new Promise((resolve, reject) => {
setTimeout(() => {
throw new Error('This error is not caught!');
}, 0)
})
} catch {
console.log("the error never gets here");
}
Code: Select all
process.on('uncaughtException', (err) => {
console.error('uncaught exception', err.message);
});
Gibt es einen besseren Weg, das zu erreichen, was ich will?