Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

Документы

Медиа

Назад

Как обрабатывать исключения? Приведите пример.

Вопрос проверяет знание системы обработки исключений в NestJS, включая использование встроенных и кастомных фильтров.

Короткий ответ

Исключения в NestJS обрабатываются с помощью фильтров исключений. Фреймворк предоставляет встроенные фильтры для общих HTTP-ошибок. Для обработки специфических ошибок можно создавать кастомные фильтры, аннотированные декоратором @Catch.

Длинный ответ

В NestJS система обработки исключений базируется на фильтрах, которые могут быть встроенными или пользовательскими. Встроенные фильтры, такие как HttpException, автоматически обрабатывают стандартные HTTP-ошибки. Кастомные фильтры позволяют добавлять собственную логику обработки.

 

Пример кастомного фильтра:

import { ExceptionFilter, Catch, ArgumentsHost, HttpException } from '@nestjs/common';
import { Request, Response } from 'express';

@Catch(HttpException)
export class HttpErrorFilter implements ExceptionFilter {
  catch(exception: HttpException, host: ArgumentsHost) {
    const ctx = host.switchToHttp();
    const request = ctx.getRequest<Request>();
    const response = ctx.getResponse<Response>();
    const status = exception.getStatus();

    const errorResponse = {
      statusCode: status,
      timestamp: new Date().toISOString(),
      path: request.url,
      message: exception.message || 'Internal Server Error',
    };

    response.status(status).json(errorResponse);
  }
}

 

Чтобы использовать этот фильтр:

Зарегистрируйте его в модуле:

import { Module } from '@nestjs/common';
import { APP_FILTER } from '@nestjs/core';

@Module({
  providers: [
    {
      provide: APP_FILTER,
      useClass: HttpErrorFilter,
    },
  ],
})
export class AppModule {}

Или примените локально к контроллеру:

import { UseFilters } from '@nestjs/common';

@UseFilters(new HttpErrorFilter())
@Controller('example')
export class ExampleController {}


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

Уровень

  • Рейтинг:

    2

  • Сложность:

    4

Навыки

  • Nest.js

Ключевые слова

#exception

#exceptionfilter

#catch

#httpexception

#usefilters

Подпишись на Node.js Developer в телеграм