Когда использовать ExceptionFilter против BaseExceptionFilter в Nest JS? - PullRequest
0 голосов
/ 03 мая 2020

Что такое различия ч / б обоих типов фильтров. А когда использовать что? Пожалуйста, объясните на любом примере

@Catch(HttpException)
export class HttpExceptionFilter implements ExceptionFilter {

}

@Catch()
export class AllExceptionsFilter extends BaseExceptionFilter {

}

1 Ответ

1 голос
/ 03 мая 2020

ExceptionFilter - это интерфейс, который определяет, что текущий класс должен реализовывать метод catch с подписью (exception: unknown, host: ArgumentHost).

BaseExceptionFilter - это класс, уже созданный в Nest JS с рабочий catch метод. Используя extend, вы можете добавить свои собственные логи c к catch, а затем в конце реализации вызвать super.catch(exception, host) и позволить Nest позаботиться обо всем остальном оттуда.

Основное различие между ними состоит в том, сколько логи c вы хотите написать против того, сколько вы хотите добавить. Если вы довольны тем, как Nest уже обрабатывает ошибки, и просто хотите чтобы добавить возможность регистрировать ваши ошибки, скажем, в базу данных, тогда extends BaseExceptionFilter хорошо подходит. Однако, если вам все равно или как фильтр исключений в Nest работает по умолчанию, тогда implements ExceptionFilter и запись своих собственных логи c - это путь к go.

...