⊗jsSpExcThr 145 of 294 menu

Бацање изузетака у ЈаваСкрипту

У претходним лекцијама смо проучили два места на којима ЈаваСкрипт баца изузетак у случају неких проблема.

У вашем пројекту, међутим, могу постојати друге ситуације које су за вас изузетне, али за ЈаваСкрипт нису. У том случају ми можемо креирати и бацати сопствене, корисничке изузетке.

Хајде да погледамо синтаксу потребну за то. За почетак изузетак треба креирати помоћу команде new Error, прослеђујући текст изузетка као параметар:

new Error('текст изузетка');

Затим тај изузетак треба да се баци помоћу команде throw:

throw new Error('текст изузетка');

Бацање изузетка наводи ЈаваСкрипт да сматра да се догодила изузетна ситуација. То значи да се такав изузетак може ухватити помоћу конструкције 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('покушавате да делите са 0, што је забрањено'); }

У ЈаваСкрипту покушај извлачења квадратног корена из негативног броја не доводи до бацања изузетка:

let result = Math.sqrt(-1); console.log(result); // приказаће NaN

Напишите сопствену функцију која ће извлачити квадратни корен из броја и притом бацати изузетак, ако се корен извлачи из негативног броја.

Српски
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Користимо колачиће за рад сајта, аналитику и персонализацију. Обрада података се врши у складу са Политиком приватности.
прихвати све подеси одбиј