⊗jsSpExcThr 145 of 294 menu

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.

frnlhirouz