logo
hero image

Error handling pada React JS

Menangani error pada React JS menggunakan react-error-boundary
4 June 2021 · 3 Minutes

Web atau Aplikasi yang dibangun menggunakan React, secara default, hanya akan menampilkan blank page atau halaman kosong jika terjadi error di production, tentunya itu akan membingungkan User (dan mungkin si Developer yang hanya mendapat laporan issue halaman kosong dari User 😅)

Nah, dalam artikel kali ini saya akan sharing bagaimana cara menangani error yang terjadi pada aplikasi React kita menggunakan library react-error-boundary, sebenarnya bisa aja sih menggunakan fitur Error Boundary bawaan React, cuman harus pakai Class Component sedangkan aplikasi yang kita buat sekarang ini kebanyakan sudah menggunakan Functional Component.

1. Menampilkan Pesan Error

Sebagai contoh, kita akan membuat aplikasi counter yang mana akan menampilkan hasil count dengan 2 digit di belakang koma menggunakan prototype toFixed,

aplikasi tersebut juga memiliki 2 button, jika button yang kiri diklik akan melakukan increment dan jika button yang kanan diklik akan mengubah state count menjadi null sehingga menyebabkan Error pada aplikasi kita karena gagal memanggil prototype toFixed yang mana hanya dimiliki oleh tipe data Number.

Counter ComponentCounter Component

Sekarang, kita coba klik tombol "Don't click me", maka akan terjadi error seperti ini :

Counter ComponentCounter Component

dan jika kita klik tombol close sebelah kanan atas, maka hanya akan muncul blank page (halaman blank inilah yang akan tampil jika terjadi error di production).

lalu bagaimana cara menampilkan pesan errornya alih-alih hanya menampilkan halaman kosong ?

Caranya, kita wrap semua component kita menggunakan component ErrorBoundary yang berasal dari library react-error-boundary, dan pada props FallbackComponent, kita masukkan component yang ingin dirender ketika terjadi error.

2. Reset Error

Agar errornya tidak tampil lagi, kita bisa melakukannya dengan dua cara :

  • Pertama, menggunakan onReset, kita berikan callback untuk me-reset value dari state count menjadi 0 sehingga tidak akan terjadi error lagi.

onResetonReset

  • Kedua, yaitu menggunakan resetKeys, reset keys berisi array dari state2 yang menyebabkan suatu error, dan untuk menghilangkan error-nya kita bisa melakukan mutasi terhadap state yang menyebabkan error tersebut. Pada contoh di bawah ini, errornya akan otomatis hilang dalam 3 detik.

resetKeysresetKeys

3. Melakukan Error Logging

selain onReset, ErrorBoundary juga menerima props onError, gunanya untuk memanggil callback yang kita berikan ketika terjadi error, dalam callback itulah kita bisa melakukan logging, entah hanya sekedar console.log atau logging ke server kita.

Error LoggingError Logging

4. Custom Error

Salah satu Fitur yang menarik dari library react-error-boundary (bahkan tidak bisa dilakukan oleh Error Boundary bawaan React) adalah kita bisa membuat custom error, karena tidak semua error tertangkap oleh ErrorBoundary, seperti error saat fetch ke API, event handlers, dan error2 yang mungkin seharusnya terjadi pada aplikasi kita.

di bawah ini adalah contoh bagaimana cara membuat custom error :

Custom Error

Oke mungkin itu saja yang bisa saya bagikan kali ini, kalau kamu merasa artikel ini bermanfaat silakan Like & Share artikel ini ke teman-teman kamu atau jika kamu punya pertanyaan, tulis aja di kolom komentar, Thank you! 😁 🙏

React
Error Handling
Web Development

Written by :
Alfin Syahruddin
Developer · Stock Trader · Libertarian · Freethinker

Always open to new ideas. 🕊️

Loading...

Related articles

Articles that you might want to read.

hero image
Bye-Bye Relative Path Import ../../../ 👋

Cara menggunakan Absolute Path Import pada React JS

16 June 2020 · 3 Minutes
React
Webpack
Web Development
hero image
CI/CD aplikasi iOS dengan Fastlane dan Github Actions

Otomatisasi build, testing, screenshot, dan deployment aplikasi iOS ke Testflight & AppStore.

24 September 2023 · 9 Minutes
iOS Development
CI/CD
Fastlane
Github Actions
hero image
CI/CD aplikasi iOS dengan Xcode Cloud

Otomatisasi build, testing, dan deployment aplikasi iOS ke Testflight & AppStore.

27 January 2024 · 8 Minutes
iOS Development
CI/CD
Xcode Cloud
All rights reserved © Alfin Syahruddin · 2019
RSS Feed