Melontarkan Pengecualian dalam JavaScript
Dalam pelajaran sebelumnya, kita telah mempelajari dua tempat di mana JavaScript melontarkan pengecualian sekiranya terdapat masalah.
Walau bagaimanapun, dalam projek anda, mungkin terdapat situasi lain yang dianggap sebagai pengecualian bagi anda, tetapi tidak bagi JavaScript. Dalam kes ini, kita boleh mencipta dan melontarkan pengecualian kami sendiri (pengecualian pengguna).
Mari kita teliti sintaks yang diperlukan untuk
ini. Pertama, pengecualian perlu dicipta
menggunakan perintah new Error, dengan menghantar
teks pengecualian sebagai parameter:
new Error('teks pengecualian');
Kemudian, pengecualian ini perlu dilontarkan menggunakan
perintah throw:
throw new Error('teks pengecualian');
Melontar pengecualian memaksa JavaScript
menganggap bahawa situasi yang luar biasa telah berlaku.
Ini bermakna pengecualian sedemikian boleh ditangkap
menggunakan konstruksi try-catch dan
diproses dengan cara yang dikehendaki.
Mari kita lihat contoh bagaimana menggunakannya. Katakan kita mempunyai fungsi yang membahagi satu nombor dengan nombor yang lain:
function div(a, b) {
return a / b;
}
Mari kita anggap bahawa pembahagian dengan sifar
adalah dilarang dan sebarang percubaan untuk melakukannya harus
menyebabkan situasi pengecualian. Untuk ini,
kita akan menyemak dalam fungsi sama ada terdapat percubaan
untuk membahagi dengan 0. Jika tidak - kita akan membahagi,
dan jika ya - kita akan melontar pengecualian:
function div(a, b) {
if (b !== 0) {
return a / b;
} else {
throw new Error('ralat pembahagian dengan sifar');
}
}
Mari kita mula-mula cuba membahagi
dengan 0, tanpa menangkap pengecualian:
alert( div(3, 0) );
Dalam kes ini, pelaksanaan skrip akan terganggu
dan ralat dengan teks 'ralat pembahagian dengan sifar' akan muncul
dalam konsol (sila semak). Sekarang mari kita
tangkap ralat kami dan
prosesnya dengan cara tertentu:
try {
alert( div(3, 0) );
} catch (error) {
alert('anda cuba membahagi dengan 0, yang dilarang');
}
Dalam JavaScript, percubaan untuk mengeluarkan punca kuasa dua daripada nombor negatif tidak menyebabkan pengecualian dilontarkan:
let result = Math.sqrt(-1);
console.log(result); // akan memaparkan NaN
Tulis fungsi anda sendiri yang akan mengeluarkan punca kuasa dua daripada nombor dan pada masa yang sama melontar pengecualian sekiranya punca kuasa dua dikeluarkan daripada nombor negatif.