Aruncarea excepțiilor în JavaScript
În lecțiile anterioare am studiat două locuri în care JavaScript aruncă excepții în cazul unor probleme.
În proiectul dvs., totuși, pot exista și alte situații care pentru dvs. sunt excepționale, dar pentru JavaScript - nu. În acest caz, puteți crea și arunca propriile dvs. excepții personalizate.
Să analizăm sintaxa necesară pentru
aceasta. Pentru început, excepția trebuie creată
cu comanda new Error, trecând ca parametru
textul excepției:
new Error('textul excepției');
Apoi această excepție trebuie aruncată cu
comanda throw:
throw new Error('textul excepției');
Aruncarea unei excepții îl determină pe JavaScript
să considere că a avut loc o situație excepțională.
Aceasta înseamnă că o astfel de excepție poate fi prinsă
cu construcția try-catch și
procesată în modul necesar.
Să vedem un exemplu despre cum să folosim acest lucru. Să presupunem că avem o funcție care împarte un număr la altul:
function div(a, b) {
return a / b;
}
Să considerăm că împărțirea la zero
este interzisă și încercarea de a face acest lucru ar trebui
să genereze o situație excepțională. Pentru aceasta,
vom verifica în funcție dacă nu există o încercare
de a împărți la 0. Dacă nu - vom împărți,
iar dacă da - vom arunca o excepție:
function div(a, b) {
if (b !== 0) {
return a / b;
} else {
throw new Error('eroare împărțire la zero');
}
}
Pentru început, să încercăm să împărțim
la 0, fără a prinde excepția:
alert( div(3, 0) );
În acest caz, executarea scriptului se va întrerupe
și în consolă va apărea o eroare cu textul 'eroare
împărțire la zero' (verificați). Să
prindem acum eroarea noastră și
să o procesăm cumva:
try {
alert( div(3, 0) );
} catch (error) {
alert('încercați să împărțiți la 0, ceea ce este interzis');
}
În JavaScript, încercarea de a extrage rădăcina pătrată dintr-un număr negativ nu duce la aruncarea unei excepții:
let result = Math.sqrt(-1);
console.log(result); // va afișa NaN
Scrieți propria funcție care va extrage rădăcina pătrată dintr-un număr și care va arunca o excepție, dacă rădăcina se extrage dintr-un număr negativ.