În timp ce filtrele specifice interceptează anumite excepții particulare, un Global Exception Filter decorat cu @Catch() (fără argumente) capturează absolut orice eroare sau excepție nearuncată din aplicație.
Aceasta previne blocarea procesului Node.js, ascunde detaliile interne tehnice (stack trace-ul) de utilizatorii externi și trimite o structură JSON unificată conform standardelor enterprise.
Exemplu: Filtru global complet pentru capturarea tuturor excepțiilor
import { ExceptionFilter, Catch, ArgumentsHost, HttpException, HttpStatus } from '@nestjs/common';
import { Response, Request } from 'express';
@Catch()
export class AllExceptionsFilter implements ExceptionFilter {
catch(exception: unknown, host: ArgumentsHost) {
const ctx = host.switchToHttp();
const response = ctx.getResponse();
const request = ctx.getRequest();
const status =
exception instanceof HttpException
? exception.getStatus()
: HttpStatus.INTERNAL_SERVER_ERROR;
const message =
exception instanceof HttpException
? exception.getResponse()
: 'A intervenit o eroare internă neprevăzută.';
response.status(status).json({
statusCode: status,
timestamp: new Date().toISOString(),
path: request.url,
error: message,
});
}
}
Întrebări & Exemple de Cod:
Filtre Globale de Excepții (Global Exception Filters)Ai o nelămurire despre utilizarea comenzii
Filtre Globale de Excepții (Global Exception Filters)sau ai descoperit un truc / fragment de cod util? Distribuie-l cu ceilalți programatori!Fii primul care pune o întrebare sau distribuie un fragment de cod / prompt!
Nu au fost adăugate încă întrebări sau exemple de cod pentru această pagină. Dacă ai întâlnit o problemă sau ai un snippet util, adaugă-l mai jos pentru a-i ajuta pe ceilalți.