Mengelola Error saat Menggunakan Framework NestJS di Node.js

dani indra

Judul: Mengelola Error dengan Bijak dalam Pengembangan Aplikasi Menggunakan Framework NestJS di Node.js

Pengantar:
NestJS adalah framework Node.js yang kuat dan modular, dirancang untuk membangun aplikasi server-side yang bersih, terstruktur, dan mudah diuji. Dalam pengembangan aplikasi, penanganan error adalah aspek penting untuk memastikan keandalan dan keamanan. Artikel ini akan membahas strategi dan praktik terbaik untuk mengelola error saat menggunakan framework NestJS di Node.js.

  1. Penanganan Error Global:
    NestJS menyediakan mekanisme untuk menangani error secara global melalui penanganan eksepsi. Anda dapat membuat middleware khusus untuk menangkap dan menangani semua jenis error yang terjadi di seluruh aplikasi. import { ExceptionFilter, Catch, ArgumentsHost } from '@nestjs/common'; @Catch() export class AllExceptionsFilter implements ExceptionFilter { catch(exception: any, host: ArgumentsHost) { const ctx = host.switchToHttp(); const response = ctx.getResponse(); const request = ctx.getRequest();response.status(500).json({ statusCode: 500, timestamp: new Date().toISOString(), path: request.url, message: 'Internal Server Error', }); } } Dan kemudian, terapkan filter ini pada level aplikasi di file main.ts: import { NestFactory } from '@nestjs/core'; import { AppModule } from './app.module'; import { AllExceptionsFilter } from './common/filters/all-exceptions.filter'; async function bootstrap() { const app = await NestFactory.create(AppModule); app.useGlobalFilters(new AllExceptionsFilter()); await app.listen(3000); } bootstrap();
  2. Pemantauan Error dengan Sentry:
    Untuk pemantauan error yang lebih canggih, Anda dapat mengintegrasikan NestJS dengan layanan seperti Sentry. Sentry membantu melacak dan menganalisis error secara real-time, memberikan wawasan berharga untuk perbaikan bug. npm install --save @nestjs/sentry @sentry/node Konfigurasi Sentry di main.ts: import { NestFactory } from '@nestjs/core'; import { AppModule } from './app.module'; import { AllExceptionsFilter } from './common/filters/all-exceptions.filter'; import { SentryModule } from '@nestjs/sentry'; async function bootstrap() { const app = await NestFactory.create(AppModule); app.useGlobalFilters(new AllExceptionsFilter()); await app.listen(3000); } bootstrap();
  3. Validasi Input dengan Pipe dan Exception:
    NestJS memiliki kemampuan bawaan untuk validasi input menggunakan class-validator dan class-transformer. Dengan menggabungkan ini dengan pipe, Anda dapat dengan mudah menangani kesalahan validasi dan memberikan respon yang sesuai kepada pengguna. import { ValidationPipe } from '@nestjs/common'; async function bootstrap() { const app = await NestFactory.create(AppModule); app.useGlobalFilters(new AllExceptionsFilter()); app.useGlobalPipes(new ValidationPipe()); await app.listen(3000); } bootstrap(); Selain itu, Anda dapat menangkap dan menangani kesalahan validasi secara spesifik di dalam controller dengan menggunakan decorator @UsePipes().
  4. Menangani Error Bisnis:
    Dalam logika bisnis, seringkali Anda perlu menangani error dengan cara yang lebih kontekstual. NestJS memungkinkan Anda melempar error yang spesifik dan menangkapnya di dalam filter atau middleware. throw new NotFoundException('Data tidak ditemukan'); Dan di dalam filter, Anda dapat menangani error ini secara khusus: import { ExceptionFilter, Catch, NotFoundException, ArgumentsHost } from '@nestjs/common'; @Catch(NotFoundException) export class NotFoundFilter implements ExceptionFilter { catch(exception: NotFoundException, host: ArgumentsHost) { const ctx = host.switchToHttp(); const response = ctx.getResponse(); const request = ctx.getRequest();response.status(404).json({ statusCode: 404, timestamp: new Date().toISOString(), path: request.url, message: 'Not Found', }); } } Dan terapkan filter ini di dalam controller atau module yang membutuhkannya.

Penutup:
Mengelola error dengan bijak adalah bagian integral dari pengembangan aplikasi yang andal dan tahan kesalahan. Dengan menggunakan fitur-fitur NestJS yang kuat, seperti penanganan eksepsi global, integrasi Sentry, validasi input, dan penanganan error bisnis, Anda dapat membangun aplikasi Node.js yang stabil dan dapat diandalkan. Selalu penting untuk memahami jenis error yang mungkin terjadi di aplikasi Anda dan mengatasi mereka dengan cara yang sesuai.

Leave a Comment