Melemparkan Pengecualian di JavaScript
Dalam pelajaran sebelumnya, kita telah mempelajari dua tempat di mana JavaScript melemparkan pengecualian jika terjadi masalah.
Namun, dalam proyek Anda, mungkin ada situasi lain yang bagi Anda merupakan pengecualian, tetapi bagi JavaScript bukan. Dalam hal ini, kita dapat membuat dan melemparkan pengecualian kita sendiri (custom exceptions).
Mari kita bahas sintaks yang diperlukan untuk
melakukannya. Pertama, pengecualian perlu dibuat
dengan perintah new Error, dengan meneruskan teks pengecualian
sebagai parameternya:
new Error('teks pengecualian');
Kemudian pengecualian ini perlu dilemparkan dengan
perintah throw:
throw new Error('teks pengecualian');
Melemparkan pengecualian memaksa JavaScript
menganggap bahwa situasi yang luar biasa telah terjadi.
Ini berarti pengecualian seperti itu dapat ditangkap
dengan konstruksi try-catch dan
diolah dengan cara yang diinginkan.
Mari kita lihat contoh bagaimana menggunakan ini. Misalkan kita memiliki fungsi yang membagi satu angka dengan angka lainnya:
function div(a, b) {
return a / b;
}
Mari kita anggap bahwa pembagian dengan nol
dilarang dan upaya untuk melakukannya harus
menyebabkan situasi pengecualian. Untuk itu,
kita akan memeriksa dalam fungsi, apakah ada upaya
membagi dengan 0. Jika tidak - kita akan membagi,
dan jika ya - kita akan melemparkan pengecualian:
function div(a, b) {
if (b !== 0) {
return a / b;
} else {
throw new Error('kesalahan pembagian dengan nol');
}
}
Pertama-tama, mari kita coba membagi
dengan 0, tanpa menangkap pengecualian:
alert( div(3, 0) );
Dalam hal ini, eksekusi skrip akan terputus
dan di konsol akan muncul error dengan teks 'kesalahan
pembagian dengan nol' (cobalah). Sekarang mari
kita tangkap error kita dan
olah dengan cara tertentu:
try {
alert( div(3, 0) );
} catch (error) {
alert('Anda mencoba membagi dengan 0, yang dilarang');
}
Dalam JavaScript, upaya mengambil akar kuadrat dari angka negatif tidak menyebabkan pelemparan pengecualian:
let result = Math.sqrt(-1);
console.log(result); // akan menampilkan NaN
Tulis fungsi Anda sendiri yang akan mengambil akar kuadrat dari sebuah angka dan pada saat yang sama melemparkan pengecualian, jika akar diambil dari angka negatif.