Логотип YeaHub

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

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

Тренажёр

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

Обучение

Навыки

Задачи

Войти

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

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

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Nest.js: exception, exceptionfilter, catch, httpexception, usefilters

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

Вопрос проверяет знание системы обработки исключений в 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 {}

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

  • Аватар

    Node.js Guru

    Demetra

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.

Уровень

  • Рейтинг:

    2

  • Сложность:

    4

Навыки

  • Nest.js

    Nest.js

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

#exception

#exceptionfilter

#catch

#httpexception

#usefilters

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

  • Аватар

    Node.js Guru

    Demetra

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.