Էքսեպշնների նետումը JavaScript-ում

Նախորդ դասերում մենք ուսումնասիրեցինք երկու tեղեք, որտեղ JavaScript-ը նետում է էքսեպշն, երբ ինչ-որ խնդիրներ են առաջանում:

Սակայն, ձեր նախագծում կարող են լինել այլ իրավիճակներ, որոնք ձեզ համար բացառիկ են, բայց JavaScript-ի համար՝ ոչ: Այդպիսի դեպքում մենք կարող ենք ստեղծել և նետել մեր սեփական, օգտագործողի էքսեպշնները:

Եկեք ուսումնասիրենք դրա համար անհրաժեշտ սինտաքսը: Սկզբում էքսեպշնը պետք է ստեղծել new Error հրամանի միջոցով՝ պարամետրով անցկացնելով էքսեպշնի տեքստը:

javascriptnew Error('էքսեպշնի տեքստը');

Այնուհետև այս էքսեպշնը պետք է նետել throw հրամանի միջոցով:

javascriptthrow new Error('էքսեպշնի տեքստը');

Էքսեպշնի նետումը ստիպում է JavaScript-ին համարել, որ տեղի է ունեցել բացառիկ իրավիճակ: Սա նշանակում է, որ նման էքսեպշնը կարելի է բռնել try-catch կոնստրուկցիայի միջոցով և մշակել անհրաժեշտ կերպով:

Եկեք օրինակով տեսնենք, թե ինչպես օգտագործել սա: Ենթադրենք, մենք ունենք ֆունկցիա, որը բաժանում է մի թիվը մյուսի:

javascriptfunction div(a, b) {
  return a / b;
}

Եկեք համարենք, որ զրոյի բաժանումը արգելված է, և դա փորձելիս պետք է առաջանա բացառիկ իրավիճակ: Դրա համար ֆունկցիայում կստուգենք, արդյոք չկա 0-ի բաժանելու փորձ: Եթե ոչ - կբաժանենք, իսկ եթե այո - կնետենք էքսեպշն:

javascriptfunction div(a, b) {
  if (b !== 0) {
    return a / b;
  } else {
    throw new Error('զրոյի վրա բաժանման սխալ');
  }
}

Եկեք սկզբից պարզապես փորձենք բաժանել 0-ի, չբռնելով էքսեպշնը:

javascriptalert( div(3, 0) );

Այս դեպքում սկրիպտի կատարումը կդադարեցվի, և կոնսոլում կհայտնվի սխալ 'զրոյի վրա բաժանման սխալ' տեքստով (ստուգեք): Եկեք այժմ բռնենք մեր սխալը և ինչ-որ կերպ մշակենք այն:

javascripttry {
  alert( div(3, 0) );
} catch (error) {
  alert('դուք փորձում եք բաժանել 0-ի, ինչը արգելված է');
}
Задание 1

JavaScript-ում բացասական թվից արմատ հանելու փորձը չի հանգեցնում էքսեպշնի նետմանը:

javascriptlet result = Math.sqrt(-1);
console.log(result); // կարտածի NaN

Գրեք ձեր սեփական ֆունկցիան, որը կհանի արմատը թվից և այդ ընթացքում կնետի էքսեպշն, եթե արմատը հանվում է բացասական թվից: