NodeJS, асинхронные исключения неуловимы - PullRequest
0 голосов
/ 28 июня 2018

Я читаю очень информативный блог (автор PANU PITKÄMÄKI) пост о том, почему асинхронные исключения невозможно отследить в NodeJS. Он заявил, что в NodeJS асинхронные исключения невозможно отследить, потому что блок catch просто не существует в стеке цикла обработки событий. Например:

 try {
     setImmediate(() => {
        throw new Error();
     });
 } catch (e) {
     // catch error.. doesn't work
 }

Я также прочитал следующее в книге "Шаблоны проектирования NodeJS:

Бросок внутри асинхронного обратного вызова приведет к тому, что исключение перепрыгнет цикл обработки событий и никогда не будет распространен до следующего обратного вызова. В NodeJS это состояние неустранимо и приводит к закрытию приложения.

Вопрос:

Из книги мне кажется, что цикл обработки событий имеет отдельный стек и, следовательно, отдельный поток, это правда?

...