Peralatan Sabuk Pengaman: Error Handling
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
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!