๐ŸŽจ

Frontend Fundamentals

Kursus Gratis โ€” Fullstack Talent

16

Peralatan Sabuk Pengaman: Error Handling

๐Ÿ“– 15 menit baca ๐Ÿท๏ธ Keamanan Aplikasi

Di dunia nyata, aplikasi ideal itu tidak ada. Internet pengguna bisa tiba-tiba terputus, Server Database mati, atau user menginput huruf ke dalam form pencarian Nomor KTP. Jika JavaScript mendeteksi 1 kecacatan fatal, ia akan memunculkan Layar Putih Kematian (Crash) dan mematikan seluruh eksekusi skrip di bawahnya!

Untuk mencegah kiamat aplikasi tersebut, kita membungkus kode-kode rawan "Terjatuh" menggunakan Sabuk Pengaman canggih bernama Try, Catch, dan Finally.

๐Ÿช‚ 1. Jaring Penyelamat: try...catch

Bungkus kode yang memiliki kemungkinan ERROR ke dalam sebuah ruangan khusus (try). Jika terjadi ledakan di dalam sana, ledakan tersebut tidak akan merusak blok di luarnya, melainkan akan dilempar dengan mulus ke ruangan penangkap ampas (catch).

try { // 1. Coba jalankan kode normal di sini console.log("Memulai mesin..."); // ERROR FATAL: Mencoba mencetak variabel gaib yang tidak pernah dibuat! console.log( variabelHantuKepo ); // Baris di bawah ini TIDAK AKAN PERNAH tersentuh karena ledakan di atas console.log("Mesin berhasil menyala sepenuhnya!"); } catch (errorDetail) { // 2. Menangkap Percikan Api (Menyelematkan sisa Aplikasi dari Crash) console.error("Ups! Ada yang bocor:", errorDetail.message); // Output Mulus: "Ups! Ada yang bocor: variabelHantuKepo is not defined" } // 3. KODE APLIKASI UTAMA TETAP SELAMAT BERJALAN! console.log("Aplikasi tetap hidup, selamat berselancar~");

๐Ÿงจ 2. Sengaja Meledakkan Bom: throw new Error

Terkadang, secara sintaks JavaScipt, kodenya berjalan normal 100%. Namun secara aturan Bisnismu, data tersebut DILARANG (Misal: User mengosongkan Password, atau User transfer Uang Melebihi Saldo). Kamu bisa dengan sengaja melempar Custom Error agar program langsung loncat ke blok catch!

function tarikTunai(saldoATM, nominalTarik) { try { if (nominalTarik > saldoATM) { // Sengaja ciptakan Objek Error dan lemparkan (throw) ke udara! throw new Error("Saldo Anda Miskin! Tidak cukup untuk foya-foya."); } console.log(`Berhasil menarik Rp ${nominalTarik} ๐Ÿ’ต`); } catch (err) { console.log("TRANSAKSI GAGAL: " + err.message); } } tarikTunai(100000, 500000); // Sistem tidak crash, tapi memunculkan pesan merah peringatan dari dev!

๐Ÿงน 3. Petugas Pencuci Piring: finally

Gunakan blok finally di urutan paling bawah jika ada serpihan kotoran yang WAJIB DIBERSIHKAN tidak peduli apakah program aslinya ERROR (catch) maupun SUKSES (try). Contoh nyatanya: Menghilangkan icon animasi "Loading Mutar-Mutar" secara paksa setelah Fetching Data dari Server usai.

๐Ÿฆ Studi Kasus: Mesin ATM Anti-Lag

async function prosesPembayaran(pin) { // 0. Tampilkan UI Mutar-mutar tampilkanLoadingScreen(true); try { if (pin !== "1234") { throw new Error("PIN SALAH!"); } // Simulasi ke jaringan Bank (2 detik) await tarikDataDariBank(); alert("Pembayaran SPP Tuntas!"); } catch (err) { // Tangkap custom error "PIN SALAH!" alert("Bencana: " + err.message); } finally { // PASTIKAN UI Mutar-Mutarnya dimatikan! // Kalau lupa matiin, HP User akan layarnya ke-lock selamanya // meskipun dia sukses/gagal bayar. tampilkanLoadingScreen(false); } }
Simulator Bank Terminal

Masukkan PIN (Hint: 1234)

*Coba masukkan PIN acak vs "1234". Perhatikan wujud tombol "Loading" pasti akan kembali menyala ke posisi "Proses Pembayaran" berkat komando ajaib di dalam blok `finally`, apapun rintangan Errornya!