⊗jsSpExcThr 145 of 294 menu

Bacanje izuzetaka u JavaScript-u

U prethodnim lekcijama smo proučili dva mesta na kojima JavaScript baca izuzetak u slučaju nekih problema.

U vašem projektu, međutim, mogu postojati i druge situacije koje su za vas izuzetne, a za JavaScript - nisu. U tom slučaju mi možemo kreirati i bacati svoje, korisničke izuzetke.

Hajde da razmotrimo sintaksu neophodnu za ovo. Za početak, izuzetak je potrebno kreirati pomoću komande new Error, prosledivši tekst izuzetka kao parametar:

new Error('tekst izuzetka');

Zatim ovaj izuzetak treba baciti pomoću komande throw:

throw new Error('tekst izuzetka');

Bacanje izuzetka tera JavaScript da smatra da se dogodila izuzetna situacija. To znači da se takav izuzetak može uhvatiti pomoću konstrukcije try-catch i obraditi na željeni način.

Pogledajmo na primeru kako se ovo koristi. Neka imamo funkciju koja deli jedan broj drugim:

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

Smatrajmo da je deljenje nulom zabranjeno i da pri pokušaju da se to uradi treba da nastane izuzetna situacija. Za ovo proveravamo u funkciji, da li postoji pokušaj deljenja sa 0. Ako ne - delićemo, a ako da - bacamo izuzetak:

function div(a, b) { if (b !== 0) { return a / b; } else { throw new Error('greška pri deljenju nulom'); } }

Hajde da prvo jednostavno probamo da podelimo sa 0, bez hvatanja izuzetka:

alert( div(3, 0) );

U ovom slučaju izvršavanje skripte će se prekinuti i u konzoli će se pojaviti greška sa tekstom 'greška pri deljenju nulom' (proverite). Hajde sada da hvatamo našu grešku i nekako je obradimo:

try { alert( div(3, 0) ); } catch (error) { alert('pokušavate da delite sa 0, što je zabranjeno'); }

U JavaScript-u pokušaj izvlačenja korena iz negativnog broja ne dovodi do bacanja izuzetka:

let result = Math.sqrt(-1); console.log(result); // ispisaće NaN

Napišite sopstvenu funkciju koja će izvlačiti koren iz broja i pritom bacati izuzetak, ako se koren izvlači iz negativnog broja.

Srpski
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Koristimo kolačiće za rad sajta, analitiku i personalizaciju. Obrada podataka se vrši u skladu sa Politikom privatnosti.
prihvati sve podesi odbij