⊗jsSpExcThr 145 of 294 menu

JavaScriptда истисноларни ушлатиш

Олдинги дарсларда биз иккита жойни ўргандик, уларда JavaScript қандайдир муаммолар юз беришида истисно ушайти.

Сизнинг лойиҳангизда, аммо, бошқа вазиятлар ҳам бўлиши мумкин, улар сиз учун истиснолий бўлса-да, JavaScript учун эмас. Бундай ҳолда биз ўзимизнинг, фойдаланувчиларнинг истисноларини яратишимиз ва ушлатишимиз мумкин.

Бунинг учун зарур бўлган синтаксисни кўриб чиқайлик. Аввало истиснони яратиш керак new Error командаси ёрдамида, параметр сифатида истисно матнини берган ҳолда:

new Error('истисно матни');

Сўнгра бу истиснони throw командаси ёрдамида ушлатиш керак:

throw new Error('истисно матни');

Истиснони ушлатиш JavaScript-нинг истиснолий вазият юз берди, деб ҳисоблашига сабаб бўлади. Демак, бундай истиснони try-catch контрукцияси ёрдамида ушлаб олиш ва керкли тарзда ишлов бериш мумкин.

Келинг, мисолда кўриб чиқайлик, будан қандай фойдаланишни. Бизда бир сонни бошқасига бўлувчи функция мавжуд деб фараз қилайлик:

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

Келинг, нолга бўлиш тақиқланган, деб ҳисоблаймиз ва бунга уриниш бўлганда истиснолий вазият юзага келиши керак. Бунинг учун функцияда текширамиз, 0га бўлиш уриниши юқми? Юқ бўлса - бўламиз, ҳа бўлса - истисно ушлатамиз:

function div(a, b) { if (b !== 0) { return a / b; } else { throw new Error('нолга бўлиш хатоси'); } }

Келинг, аввало истиснони ушламасдан, 0га бўлишни соддагина синаб кўрамиз:

alert( div(3, 0) );

Бунда скриптнинг бажарилиши тўхталади ва консолда 'нолга бўлиш хатоси' матни билан хато пайдо бўлади (текшириб кўринг). Келинг енди бизнинг хатомизни ушлаб оламиз ва унга қандайдир тарзда ишлов беремиз:

try { alert( div(3, 0) ); } catch (error) { alert('сиз нолга бўлишга уринасиз, бу тақиқланган'); }

JavaScriptда манфий сондан илдиз олиш уриниши истисно ушлатишига олиб келмайди:

let result = Math.sqrt(-1); console.log(result); // NaN чиқади

Сондан илдиз олувчи ва шу билан бирга манфий сондан илдиз олинганида истисно ушлатувчи ўз функциянгизни ёзинг.

mskauzlituz