#exception #nestjs #typeorm
Вопрос:
Я работаю над своим проектом firt nestjs для школы, это API nestjs, который работает с пользователями.
С точки зрения управления ошибками я хотел бы понять, как определить, является ли метод typeorm таким find
, findOne
, remove
… есть шанс создать исключение.
- Например
find(userId)
, не будет бросать, если идентификатор пользователя не существует, но это обещание, так что я все равно должен связать a.catch()
? - Есть ли какие-либо случаи, в которых это могло бы привести к сбою (например, сервер базы данных не работает ?)
Исходя из языков Си, я, как правило, обучен представлять наихудшие сценарии, а не обычное поведение, и я не нахожу в документации ничего, что четко указывало бы на бросок для каждого метода.
Ответ №1:
Например, find(идентификатор пользователя) не будет выдавать, если идентификатор пользователя не существует, но это обещание, так что я все равно должен цеплять .catch() ?
- Не нужно цеплять защелку. Вы можете добавить весь вызов бд в блок try-catch. Даже если вы не поймаете исключение, это совершенно нормально, так как NestJS имеет встроенный обработчик исключений.
Есть ли какие-либо случаи, в которых это могло бы привести к сбою (например, сервер базы данных не работает ?)
- Да, это вызовет исключение, но, как уже упоминалось, NestJS содержит встроенный обработчик исключений, который будет перехватывать все необработанные исключения и возвращает соответствующий ответ для вас. Таким образом, нет необходимости добавлять блоки catch. Вы можете прочитать больше об этом здесь — Фильтры исключений.
Комментарии:
1. Спасибо. Два следующих вопроса: в таком случае, что отличает блок try/catch от .then().catch() ? Кроме того, поскольку первоначальный вопрос был немного более общим: где я мог бы найти ссылку, в которой точно указано поведение методов ? Я, возможно, слишком привык точно описывать, как ожидается, что функции библиотек будут успешными, завершатся неудачей и т. Д…. Что я нахожу удивительным, что, похоже, нет какой-либо очень подробной ссылки на TypeORM.