Я не пишу обработчики, их логика может различаться.
Обработчики могут выполняться одновременно.
Я хочу, чтобы инфраструктура обеспечивала изоляцию, т. е. инфраструктура должна гарантировать, что сбой, любой сбой на уровне приложения в одном обработчике, не влияет на другие обработчики, работающие «в то же время».
В настоящее время я окружил каждый обработчик запускается с помощью try-catch, но, как кажется, существует много типов ошибок, которые, когда происходят, не перехватываются в предложении catch и, таким образом, приводят к сбою службы (поскольку они запускаются из другого контекста).
Я предполагаю, что на уровне обработчика можно построить обработчик таким образом, чтобы обрабатывались все ошибки, и во многих местах именно это и происходит. Моя проблема в том, что если кто-то «забыл» обработать ошибку на уровне обработчика, я, как инфраструктурный уровень, не могу «отловить» эти ошибки за него, поэтому я не могу обеспечить изоляцию и гарантировать сбой в 1 обработчике. не влияет на других.
Каков машинописный способ обработки такого случая?
Код, иллюстрирующий проблему (предположим, он находится внутри асинхронной функции):
Код: Выделить всё
try {
await new Promise((resolve, reject) => {
setTimeout(() => {
throw new Error('This error is not caught!');
}, 0)
})
} catch {
console.log("the error never gets here");
}
Код: Выделить всё
process.on('uncaughtException', (err) => {
console.error('uncaught exception', err.message);
});
Есть ли лучший способ добиться того, чего я хочу?
Подробнее здесь: https://stackoverflow.com/questions/793 ... -in-nodejs
Мобильная версия