JavaScript-də İstisnaların Atılması
Əvvəlki dərslərdə biz JavaScript-in bəzi problemlər olduqda istisna atdığı iki yeri öyrəndik.
Lakin, layihənizdə sizin üçün istisna sayılan, amma JavaScript üçün sayılmayan başqa hallar da ola bilər. Belə bir halda biz özümüz, istifadəçi tərifli istisnalar yarada və ata bilərik.
Gəlin bunun üçün lazım olan sintaksisi nəzərdən keçirək. Əvvəlcə istisnanı
new Error əmri ilə yaratmaq lazımdır, parametr kimi
istisnanın mətnini ötürərək:
new Error('istisna mətni');
Sonra bu istisna throw əmri ilə atılmalıdır:
throw new Error('istisna mətni');
İstisnanın atılması JavaScript-ə istisna vəziyyətin baş verdiyini
hesab etməyə məcbur edir. Bu o deməkdir ki, belə bir istisnanı
try-catch konstruksiyası ilə tutmaq və
lazımi şəkildə emal etmək olar.
Gəlin bir nümunə üzərində baxaq bunu necə istifadə etmək olar. Tutaq ki, bir ədədi digərinə bölən funksiyamız var:
function div(a, b) {
return a / b;
}
Gəlin hesab edək ki, sıfıra bölmək qadağandır və bunu etməyə cəhd edəndə istisna vəziyyət yaranmalıdır. Bunun üçün funksiyada yoxlayaq, sıfıra bölmə cəhdi yoxdurmı. Əgər yoxdursa - bölək, əgər varsa - istisna ataq:
function div(a, b) {
if (b !== 0) {
return a / b;
} else {
throw new Error('sıfıra bölmə xətası');
}
}
Gəlin əvvəlcə sadəcə sıfıra bölməyə cəhd edək, istisnanı tutmadan:
alert( div(3, 0) );
Bu halda skriptin icrası dayanacaq
və konsolda 'sıfıra bölmə xətası' mətni ilə xəta görünəcək (yoxlayın). Gəlin
indi xətamızı tutaq və onu nə isə şəkildə emal edək:
try {
alert( div(3, 0) );
} catch (error) {
alert('siz sıfıra bölməyə cəhd edirsiniz, bu isə qadağandır');
}
JavaScript-də mənfi ədədin kökünü almaq cəhdi istisna atmına səbəb olmur:
let result = Math.sqrt(-1);
console.log(result); // NaN çap edəcək
Ədəddən kök alan və eyni zamanda əgər kök mənfi ədəddən alınırsa istisna atan öz funksiyanızı yazın.