В одном из обработчиков маршрутов моего приложения я вызываю метод, который возвращает обещание Q. Вместо того, чтобы обрабатывать отклонение с помощью метода .catch
, я хочу, чтобы оно было выброшено и перехвачено обработчиком всех ошибок моего приложения Express.
Я попробовал метод Q done
, но он выдает исключение асинхронно, поэтому вместо того, чтобы обрабатывать его обработчиком всех улавливающих ошибок, он распространяется до конца, и мое приложение завершается:
// The route handler
function index(req, res) {
dao.findById(id).then(function (data) {
res.send(data);
}).done();
}
// The catch all event-handler
function catchAllErrorHandler(err, req, res, next) {
console.log(err, req, res);
}
// Registration of the catch-all event handler
app.use(catchAllErrorHandler);
Ошибка никогда не попадает в обработчик всех ошибок. Есть ли способ заставить catchAllErrorHandler
обработать возникшие ошибки?