JavaScript-da Ýalňyşlyklary Atmak
Öňki sapaklarda biz JavaScript-iň nähili ýalňyşlyklary käbir kynçylyklar ýüze çykanda atýandygyny öwrendik.
Şeýle-de, size görä ýalňyş bolup görünýän, ýöne JavaScript görä bolmadyk başga ýagdaýlar size bar bolup biler. Şeýle ýagdaýda biz öz ýalňyşlarymyzy döredip, atyp bilýäris.
Geliň buna gerek bolan sintaksisi gözden geçireli.
Ilki bilen, ýalňyşlygy new Error buýrugy bilen
döretmeli, ýalňyşlygyň tekstini parametr hökmünde
bermeli:
new Error('ýalňyşlyk teksti');
Soňra bu ýalňyşlygy throw buýrugy bilen
atmaly:
throw new Error('ýalňyşlyk teksti');
Ýalňyşlygy atmak JavaScript-e ýalňyşlyk ýagdaýy
ýüze çykandygyny habar berýär.
Bu ýalňyşlyk try-catch konstruksiýasy bilen
tutulyp, gerek görnüşde işlenip biliner diýen manyny berýär.
Geliň mysal üsti bilen nädip ulanmalydygyny görüň. Bizde bir sany beýleki sany bölýän funksiýa bar diýeliň:
function böl(a, b) {
return a / b;
}
Nulla bölmek gadagan diýip hasap edeliň we muny etmäge synanyşmak ýalňyşlyk ýagdaýyny döretmeli. Bunun üçin funksiýada, nulla bölmäge synanyşyk barmy? diýip barlamaly. Ýok bolsa - bölmeli, bar bolsa - ýalňyşlyk atmaly:
function böl(a, b) {
if (b !== 0) {
return a / b;
} else {
throw new Error('nulla bölme ýalňyşlygy');
}
}
Geliň ilki bilen, ýalňyşlygy tutmazdan,
0-a bölmäge synanyşalyň:
alert( böl(3, 0) );
Bu ýagdaýda skriptiň ýerine ýetirilişi togtar we
konsolda 'nulla bölme ýalňyşlygy' teksti bilen
ýalňyş peýda bolar (barlaň). Indi geliň ýalňyşlygymyzy tutalyň we
onuň üstünde işleýäliň:
try {
alert( böl(3, 0) );
} catch (ýalňyş) {
alert('siz gadagan edilen nulla bölmäge synanyşýarsyňyz');
}
JavaScript-de menfi sanyň köküni çykarmaga synanyşmak ýalňyşlyk atmazlyga getirýär:
let netije = Math.sqrt(-1);
console.log(netije); // NaN çykarar
Öz funksiýaňyzy ýazyň, ol sanyň köküni çykarmaly we şol bir wagtyň özünde menfi sanyň kökü çykarylýan ýagdaýda ýalňyşlyk atmaly.