@Catch() & ExceptionFilter este o componentă esențială în ecosistemul NestJS. Definirea filtrelor globale sau locale pentru capturarea și formatarea personalizată a excepțiilor HTTP.
Sintaxă și Utilizare Practică
Exemplu practic documentat pas cu pas:
import { ExceptionFilter, Catch, ArgumentsHost, HttpException } from '@nestjs/common';
@Catch(HttpException)
export class CustomHttpFilter implements ExceptionFilter {
catch(exception: HttpException, host: ArgumentsHost) {
const ctx = host.switchToHttp();
const response = ctx.getResponse();
const status = exception.getStatus();
response.status(status).json({
cod: status,
mesaj: exception.message,
data: new Date().toISOString()
});
}
}
Bune Practici în Producție
- Arhitectură și Tipizare: Folosiți DTO-uri, validare strictă și principii de decuplare (Inversion of Control).
- Performanță: Evitați interogările N+1, folosiți mecanisme de caching și rute asincrone unde este cazul.
- Securitate: Validați întotdeauna datele de intrare și aplicați filtre de autorizare pe toate endpoint-urile sensibile.