Belajar Dasar JavaScript: Penanganan Error atau Eksepsi
Program kalian jelas akan berurusan dengan error. Dalam pemrograman, error sering disebut sebagai eksepsi (exception). Dalam bahasa JavaScript terdapat beberapa keyword yang digunakan untuk menangani error.
Menangkap Error
Pada JavaScript, jika error terjadi maka program secara otomatis dihentikan. Contohnya adalah:
const hasil = JSON.parse(";");
console.log("Pemangilan berhasil");
console.log(hasil);
console.log("Program selesai");
// Uncaught SyntaxError: Unexpected token ; in JSON at position 0
Fungsi JSON.parse
digunakan untuk mengubah sebuah teks JSON menjadi objek. Pada program di atas
terjadi error karena teks yang kita masukkan ke dalam JSON.parse
bukan merupakan JSON yang valid.
Agar program tidak dihentikan, kita harus menangkap error tersebut. Keyword yang digunakan untuk
menangkap error adalah try
serta catch
. Secara bahasa try berarti mencoba sedangkan catch
adalah menangkap. Contoh penggunaannya seperti ini:
try {
const hasil = JSON.parse(";");
console.log("Pemangilan berhasil");
console.log(hasil);
} catch (error) {
console.log("JSON tidak dapat diubah");
console.log(`Terjadi error: ${error}`);
}
console.log("Program selesai");
Maksud kode di atas adalah program mencoba menjalankan blok kode try. Jika terjadi error maka
akan ditangkap dan blok kode catch kemudian dijalankan. Pada blok kode catch akan tersedia
variabel error
yang berisi error/eksepsi yang ditangkap. Nama variabel yang berisi error
ditentukan oleh argumen yang kita berikan ke blok catch.
Saat dijalankan kode tersebut akan mengeluarkan:
JSON tidak dapat diubah
Terjadi error: SyntaxError: Unexpected token ; in JSON at position 0
Program selesai
Terlihat bahwa console.log("Pemangilan berhasil")
dan console.log(hasil)
tidak dijalankan tetapi
langsung diloncati dan blok kode catch dijalankan.
Jika teks yang kita masukkan ke JSON.parse
kita ubah menjadi JSON yang valid, contohnya seperti
ini:
// ... kode sama
const hasil = JSON.parse("{}");
// ... kode sama
Maka program tidak akan error dan akan mengeluarkan seperti ini:
Pemangilan berhasil
{}
Program selesai
Terlihat bahwa console.log("Pemangilan berhasil")
dan console.log(hasil)
dijalankan namun blok
kode catch tidak dijalankan dan langsung diloncati. Jadi, blok kode catch hanya dijalankan saat
terjadi error. Jika tidak terjadi error, maka tidak dijalankan.
Saat penangkapan error kita bisa menambahkan blok kode finally. Blok kode ini dibuat dengan
keyword finally
. Contohnya seperti ini:
try {
const hasil = JSON.parse(";");
console.log("Pemangilan berhasil");
console.log(hasil);
} catch (error) {
console.log("JSON tidak dapat diubah");
console.log(`Terjadi error: ${error}`);
} finally {
console.log("Finally dipanggil");
}
console.log("Program selesai");
Blok kode finally akan selalu dijalankan, bahkan jika terjadi error saat menjalankan blok kode catch. Blok kode finally akan dijalankan setelah blok kode try maupun catch selesai dijalankan.
Keluaran kode di atas:
JSON tidak dapat diubah
Terjadi error: SyntaxError: Unexpected token ; in JSON at position 0
Finally dipanggil
Program selesai
Jika teks yang kita masukkan ke JSON.parse
kita ubah menjadi JSON yang valid, contohnya seperti
ini:
// ... kode sama
const hasil = JSON.parse("{}");
// ... kode sama
Maka keluaran kode di atas menjadi:
Pemangilan berhasil
{}
Finally dipanggil
Program selesai
Saat penangkapan error dengan try kita harus menyertakan minimal salah satu dari blok kode catch atau try.
Membuat Error
Untuk membuat error, kita bisa menggunakan keyword throw
. Secara bahasa throw berarti
melemparkan. Jadi maksud throw adalah melemparkan error. Error bisa berupa objek apapun.
Contohnya seperti berikut:
throw "Terjadi suatu error";
throw 10;
Error bisa ditangkap dengan Try-Catch.
try {
throw "Terjadi suatu error";
} catch (e) {
console.log(`Error: $e`);
}
Kelas Error
Dalam JavaScript terdapat kelas bernama Error
. Kelas ini digunakan khusus dalam penanganan error.
Semua error yang dilemparkan oleh fungsi bawaan JavaScript merupakan objek yang kelasnya adalah
turunan kelas ini. Contohnya: pada kode di atas error yang terjadi adalah SyntaxError
. Untuk
mengetahui kelas Error lebih lanjut kalian bisa baca
Error di dalam dokumentasi MDN.
Jadi kita bisa mengecek jenis error yang terjadi dengan mengecek nama kelas dari error yang dilemparkan. Contohnya seperti ini:
try {
const number = 10;
console.log(number.toUppercase());
} catch (e) {
if (e instanceof TypeError) {
console.log("Fungsi tidak ada");
}
}
// Keluaran:
// Fungsi tidak ada
Kalian bisa melihat daftar kelas error di Error reference di dokumentasi MDN