170 похожих чатов

Привет. Юзаю Express. Подскажите, как сделать обработку ошибок, чтобы приложение

не падало? Нужно в каждом методе, где, например, запрос в базу есть, отлавливать потенциальные ошибки, или можно сделать отлов ошибок где-то в одном месте?

9 ответов

22 просмотра

Добавь ещё один миддлвар, после основного роутинга. Если через next прокидываешь ошибку, туда придёт. Только коллбек с 4мя аргументами

Роман- Автор вопроса

а если у меня найдется место, в котором неожиданно вылезла ошибка (или я не доглядел, что нужно её обработать\пробросить), то поможет ли это не упасть приложению? сейчас попробовал так обратиться к монге за файлом, который я уже удалил, при этом приложение упало с ошибкой что файл не найден

В промисе на .catch(next). Ошибка должна туда улететь

Роман- Автор вопроса

вот такая штука не работает. catch не очень понял куда запихнуть

у тебя же запросы базу через промисы, ну или коллбеки. Когда вызываешь next и кидаешь туда первым аргументом что-то (объект ошибки например), по трубе до последнего миддлавара должно дойти

Любой асинхронный кол должен быть врапнут в try catch. В зависимости от ошибки нужно генерировать код ответа. Нельзя отвечать 404 когда не найдено чего то и когда база упала. В вашем примере так и будет.

Вот тут

Роман- Автор вопроса

у меня каждый запрос отлавливает ошибку, и, если она есть, то отправляет ответ со статусом 500\40* соответственно. Вопрос скорее как "обернуть всё приложение в try\catch", чтобы если ошибка каста строки в число не роняла приложение

например так: router.post("/", authSrv.validateJWTToken, validatorSrv.exchange, errorHandle(exchangeCtrl.exchange)); exchangeCtrl.exchange - это обработчик запроса, который передаеться аргументом у функции errorHandle Ну и сама функция может быть до боли простой: export const errorHandle = handler => async (req, res, next) => { try { await handler(req, res, next); } catch (e) { generateHttpError(res, e, next); } };

Похожие вопросы

Обсуждают сегодня

У меня это всегда вопрос вызывало.. Нафига писать код так, чтобы потом ошибки вылавливать?
Nik
44
что за асемблер кста?
Shvabrikk Nya
19
Добрый день! Пробую отловить исключение EConvertError: function _TryTextToDouble(var DoubleVar: Extended; Text: String): Boolean; begin try DoubleVar := StrToFloat...
Kirill Filippenok
19
А где @Grinyaha уважаемый пропал?
Am Ambrion
14
Сделал краткий обзор магазина из статьи и заодно там же записал инструкцию по развёртыванию. https://www.youtube.com/watch?v=8-sE1vNk95Q (чё думаете по звуку? кое-что поменял...
Andrey K
17
Привет, коллеги! Возникла задача ограничить максимальный размер вложений для определённых расширений, например, чтобы для изображений лимит был 10 МБ, а для видео — 100 МБ. Ог...
Andro
1
Добрый вечер. Есть вопрос, а может и предложение. Был у меня диалог в другой группе о делфи и я задался вопросом: "А нельзя ли в делфи цвет //коментария и {комментария} сде...
Kraszx
24
вот не понимаю, зачем вообще лезть в осдев, если даже базы не знаешь? хотя бы про загрузку, форматы файлов железо какое-никакое. Ну реально, даже зная работу железа, с условны...
Mixail Frolov
7
Можно ли ставить FPC транк, а Лазарь нет?
А Андрей
9
Shadow Akira ты откуда инфу черпаешь?
One
9
Карта сайта