⊗jsSpExcThr 145 of 294 menu

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.

frhumsrobn