Cara Menggunakan Filter Pengecualian untuk Menangkap Bug di Nest.js

969 BLOG Cara Menggunakan Filter Pengecualian untuk Menangkap Bug di Nest.js

Menemukan kesalahan dan bug dalam kode Anda adalah hal yang umum jika Anda seorang pengembang perangkat lunak. Mereka mungkin terjadi karena input yang salah, dari meneruskan tipe data yang salah, atau karena penundaan atau waktu tunggu respons.

Dan meskipun kesalahan dan bug adalah bagian dari kehidupan, mereka dapat membuat Anda stres dan menurunkan produktivitas Anda. Untungnya, Anda dapat membatasi jumlah hama dalam kode Anda dengan mengambil tindakan proaktif untuk mencegah dan memperbaikinya.

Dalam artikel ini, Anda akan mempelajari cara terbaik menggunakan filter pengecualian untuk membatasi gangguan dalam implementasi kode Anda.

Apa itu Filter Pengecualian?

Filter pengecualian adalah konstruksi bahasa pemrograman yang membantu Anda menangani pengecualian atau kesalahan yang ditemukan di kelas layanan atau pengontrol. Menggunakan filter ini meningkatkan efisiensi basis kode Anda dan membuat kesalahan lebih mudah dilacak, yang membantu Anda menyelesaikannya.

Apa itu Filter Pengecualian di Nest.js?

Nest.js memiliki antarmuka filter pengecualian bawaan yang Anda impor dari @nestjs/common package. Antarmuka ini memberi Anda informasi akurat tentang pengecualian yang mungkin Anda temui sehingga Anda dapat mengetahui cara memperbaikinya.

Beberapa filter pengecualian bawaan termasuk NotFoundException, UnauthorizedExceptionDan RequestTimeOutExceptiondiantara yang lain.

Cara Membuat Filter Pengecualian Khusus

Untuk membuat kelas filter pengecualian khusus, Anda mendefinisikannya dengan a @Catch dekorator yang menerima jenis pengecualian yang harus ditangkap oleh filter. Kelas ini kemudian mengimplementasikan ExceptionFilter antarmuka. Dengan cara ini Anda akan memiliki akses ke catch metode yang disediakan antarmuka.

NestJS memungkinkan Anda membuat filter pengecualian sendiri sehingga Anda dapat menentukan informasi seperti apa yang harus dikembalikan.

@Catch(HttpException)export class TestExceptionFilter implements ExceptionFilter {  catch(exception: HttpException, host: ArgumentsHost) {    const ctx = host.switchToHttp();    const response = ctx.getResponse<Response>();    const request = ctx.getRequest<Request>();    const status = exception.getStatus();    response      .status(status)      .json({        statusCode: status,        timestamp: new Date().toISOString(),        path: request.url,      });  }}

Seperti yang Anda lihat di atas, metode catch menerima dua input argumen: the exception:HttpException dan host:argumentsHost.

HttpException adalah pengecualian yang dilemparkan ketika sebuah HTTP permintaan gagal dan mengembalikan Pesan Kesalahan yang sesuai dengan kode status sebagai respons terhadap klien.

Itu argumentsHost parameter memberikan informasi tentang permintaan saat ini dan siklus respons. Di sini kode mengekstrak objek Respons dan Permintaan dari file ArgumentsHost objek menggunakan switchToHttp metode. Ini kemudian memanggil getStatus metode dari HttpException objek untuk mengambil kembali HTTP kode status kesalahan.

A JSON objek dikembalikan. Ini berisi kode status, stempel waktu kesalahan, dan URL permintaan, menyetel HTTP kode status respons menjadi kode status kesalahan.

Hal menarik lainnya yang perlu diperhatikan adalah Anda dapat mengubah kode status dan pesan kesalahan dari filter pengecualian yang ada seperti NotFoundException sehingga mereka menampilkan pesan kesalahan khusus dan kode status Anda sendiri. Berikut ilustrasinya di bawah ini:

export class NotFoundException extends HttpException {  constructor(message: string) {    super(message || 'Not Found', HttpStatus.NOT_FOUND);  }}

Contoh di atas menunjukkan bahwa NotFoundException kelas telah dimodifikasi untuk menerima a message parameter dalam metode konstruktor atau berikan nilai default ‘Tidak Ditemukan’.

Dengan melakukan ini, Anda sekarang dapat menyesuaikan pesan kesalahan untuk Anda NotFoundException kelas dan mengembalikan a 404 Kode status.

Cara Mengikat Filter Pengecualian di Nest.js

Anda mungkin bertanya-tanya bagaimana Anda bisa mengimplementasikan pengecualian khusus atau modifikasi yang telah Anda buat untuk aplikasi Anda. Nah, Anda menggunakan sesuatu yang disebut mengikat.

Ada beberapa cara untuk mengikat filter pengecualian ke aplikasi Anda. Berikut adalah tiga cara utama yang dapat Anda lakukan:

  1. Lingkup Global
  2. Lingkup Pengontrol
  3. Lingkup Metode

Mengikat menggunakan Lingkup Global

Seperti namanya “Global”, itu mencakup keseluruhan hal – dalam hal ini aplikasi. Filter pengecualian khusus adalah terikat ke keseluruhan aplikasi web Anda dengan menggunakan useGlobalFilters() fungsi. Contoh filter pengecualian khusus Anda diteruskan sebelum memulai server.

Berikut adalah contoh tampilannya:

async function bootstrap() {  const app = await NestFactory.create(AppModule);  app.useGlobalFilters(new TestExceptionFilter());  await app.listen(3000);}bootstrap();

Jika Anda mengikat filter pengecualian ke lingkup global, itu berarti pengecualian jenis apa pun HttpException dilemparkan dari pengontrol atau metode apa pun dalam aplikasi akan ditangani oleh TestExceptionFilter.

Binding menggunakan Controller Scope

Jika Anda ingin menangani pengecualian yang tidak hanya mencakup metode tertentu dalam aplikasi Anda, tetapi juga seluruh pengontrol dengan metode di dalamnya, Anda dapat @UseFilters untuk mengikat pengecualian khusus ke pengontrol. Lihat di bawah ini adalah contohnya:

@UseFilters(TestExceptionFilter)@Controller('users')export class UsersController {  @Get()  async findUsers() {    // ...  }}

Dalam contoh ini, filter pengecualian khusus terikat ke pengontrol dengan meletakkannya di depan @Controller penghias. Dengan cara ini menangani kesalahan apa pun yang berasal dari rute di pengontrol ini.

Binding menggunakan Method Scope

Dalam bentuk penjilidan ini, Anda menggunakan @UseFilters dekorator untuk menerapkan Custom ExceptionFilter yang Anda tetapkan ke metode dalam aplikasi Anda. Ini contohnya:

@Controller()export class UsersController {  @Get()  @UseFilters(TestExceptionFilter)  async findUsers() {    // ...  }}

Dalam contoh ini, Anda menggunakan @UseFilters dekorator untuk mengikat TestExceptionFilter filter pengecualian ke findUsers metode. Ini berarti bahwa jika ada pengecualian terjadi dalam findUsers() metode, yang TestExceptionFilter akan menangkap dan menanganinya.

Debugging Menjadi Lebih Mudah

Dalam tutorial ini, Anda mempelajari tentang filter pengecualian di Nest.js, dan cara membuat filter pengecualian khusus. Anda juga melihat beberapa cara berbeda untuk menerapkannya dalam aplikasi Anda.

Semua metode yang dibahas adalah cara yang baik untuk menangani pengecualian. Dengan menerapkan teknik ini, Anda dapat memastikan kinerja aplikasi lebih lancar dan memberikan pengalaman pengguna yang lebih baik.

Jika Anda menikmati membaca artikel ini, Anda dapat membagikan dan mengikuti saya Twitter Dan Linkedin.

Comments

Popular posts from this blog

4 Alasan Anda Harus Membeli Pensil Apple untuk iPad Anda

7 Cara Teratas yang Dapat Anda Gunakan Google Bard

10 Aplikasi Kesehatan Gratis Terbaik untuk Pengguna iPhone dan Apple Watch