Я читаю очень информативный блог (автор PANU PITKÄMÄKI) пост о том, почему асинхронные исключения невозможно отследить в NodeJS. Он заявил, что в NodeJS асинхронные исключения невозможно отследить, потому что блок catch
просто не существует в стеке цикла обработки событий. Например:
try {
setImmediate(() => {
throw new Error();
});
} catch (e) {
// catch error.. doesn't work
}
Я также прочитал следующее в книге "Шаблоны проектирования NodeJS:
Бросок внутри асинхронного обратного вызова приведет к тому, что исключение перепрыгнет цикл обработки событий и никогда не будет распространен до следующего обратного вызова. В NodeJS это состояние неустранимо и приводит к закрытию приложения.
Вопрос:
Из книги мне кажется, что цикл обработки событий имеет отдельный стек и, следовательно, отдельный поток, это правда?