Я написал простой экспресс-маршрут для проверки моего обработчика событий на наличие необработанных исключений, но по какой-то причине при вызове из кода маршрута обработчик события не вызывается:
app.js:
process.on('uncaughtException', err => {
console.log('Handling exception');
});
app.get('/', (req, res) => {
console.log('Serving request');
throw(new Error('Some error'));
res.send('Hello World!');
});
const port = process.env.PORT || 8888;
app.listen(port, () => console.log(`Listening on port ${port}...`));
При отправке запроса GET я вижу на экране следующий вывод (стек вызовов сокращен для лучшей читаемости):
Listening on port 8888...
Serving request
Error: error
at app.get (/Users/omerah/Documents/playground/node/hello-server/app.js:48:11)
at Layer.handle [as handle_request] (/Users/omerah/Documents/playground/node/hello-server/node_modules/express/lib/router/layer.js:95:5)
at next (/Users/omerah/Documents/playground/node/hello-(/Users/omerah/Documents/playground/node/hello-server/node_modules/express/lib/router/index.js:335:12)
at next (/Users/omerah/Documents/playground/node/hello-
...
Ниже приведена структура моего кода (упрощенная версия). Исключения вызываются из кода в папке «маршрутов» и должны быть перехвачены обработчиком событий, который определен в app.js:
├── [-rw-r--r--] app.js
├── [-rw-r--r--] authenticate.js
├── [drwxr-xr-x] routes
| ├── [-rw-r--r--] login.js
├── [drwxr-xr-x] modles
├── [drwxr-xr-x] utils
Почему не вызывается обработчик событий?