как узнать, будут ли методы TypeORM бросать или нет?

#exception #nestjs #typeorm

Вопрос:

Я работаю над своим проектом firt nestjs для школы, это API nestjs, который работает с пользователями.

С точки зрения управления ошибками я хотел бы понять, как определить, является ли метод typeorm таким find , findOne , remove … есть шанс создать исключение.

  • Например find(userId) , не будет бросать, если идентификатор пользователя не существует, но это обещание, так что я все равно должен связать a .catch() ?
  • Есть ли какие-либо случаи, в которых это могло бы привести к сбою (например, сервер базы данных не работает ?)

Исходя из языков Си, я, как правило, обучен представлять наихудшие сценарии, а не обычное поведение, и я не нахожу в документации ничего, что четко указывало бы на бросок для каждого метода.

Ответ №1:

Например, find(идентификатор пользователя) не будет выдавать, если идентификатор пользователя не существует, но это обещание, так что я все равно должен цеплять .catch() ?

  1. Не нужно цеплять защелку. Вы можете добавить весь вызов бд в блок try-catch. Даже если вы не поймаете исключение, это совершенно нормально, так как NestJS имеет встроенный обработчик исключений.

Есть ли какие-либо случаи, в которых это могло бы привести к сбою (например, сервер базы данных не работает ?)

  1. Да, это вызовет исключение, но, как уже упоминалось, NestJS содержит встроенный обработчик исключений, который будет перехватывать все необработанные исключения и возвращает соответствующий ответ для вас. Таким образом, нет необходимости добавлять блоки catch. Вы можете прочитать больше об этом здесь — Фильтры исключений.

Комментарии:

1. Спасибо. Два следующих вопроса: в таком случае, что отличает блок try/catch от .then().catch() ? Кроме того, поскольку первоначальный вопрос был немного более общим: где я мог бы найти ссылку, в которой точно указано поведение методов ? Я, возможно, слишком привык точно описывать, как ожидается, что функции библиотек будут успешными, завершатся неудачей и т. Д…. Что я нахожу удивительным, что, похоже, нет какой-либо очень подробной ссылки на TypeORM.