⊗jsSpExcJSE 149 of 294 menu

Exemplu de excepție cu JSON în JavaScript

Să presupunem că de undeva din lumea exterioară vine un JSON cu un produs:

let json = '{"product": "apple", "price": 1000, "amount": 5}'; let product = JSON.parse(json); alert(product.price * product.amount);

Știți deja că metoda JSON.parse va arunca o excepție dacă JSON-ul este incorect. Să prindem această excepție:

try { let json = '{"product": "apple", "price": 1000, "amount": 5}'; let product = JSON.parse(json); alert(product.price * product.amount); } catch (error) { // reacționăm cumva la excepție }

Cu toate acestea, se poate întâmpla ca JSON-ul în sine să fie corect, dar să nu conțină câmpurile de care avem nevoie, de exemplu, nu există câmp pentru preț:

let json = '{"product": "apple", "amount": 5}'; // nu există preț

Să considerăm că și aceasta este o situație excepțională și în acest caz vom arunca o excepție personalizată:

try { let json = '{"product": "apple", "amount": 5}'; let product = JSON.parse(json); if (product.price !== undefined && product.amount !== undefined) { alert(product.price * product.amount); } else { throw { name: 'ProductCostError', message: 'lipsește prețul sau cantitatea pentru produs' }; } } catch (error) { // reacționăm cumva la excepție }

Acum blocul catch va primi două tipuri de excepții: fie JSON-ul este în general incorect, și atunci va fi o excepție de tipul SyntaxError, fie JSON-ul este corect, dar nu conține câmpurile de care avem nevoie, și atunci va fi o excepție de tipul ProductCostError.

Să prindem aceste tipuri de excepții în blocul catch:

try { let json = '{"product": "apple", "amount": 5}'; let product = JSON.parse(json); if (product.price !== undefined && product.amount !== undefined) { alert(product.price * product.amount); } else { throw { name: 'ProductCostError', message: 'lipsește prețul sau cantitatea pentru produs' }; } } catch (error) { if (error.name == 'SyntaxError') { alert('JSON produs incorect'); } else if (error.name == 'ProductCostError') { alert('Produsului îi lipsește prețul sau cantitatea'); } }

Să presupunem că la tine vine un JSON de următoarea formă:

let json = `[ { "name": "user1", "age": 25, "salary": 1000 }, { "name": "user2", "age": 26, "salary": 2000 }, { "name": "user3", "age": 27, "salary": 3000 } ]`;

Verificați acest JSON pentru corectitudinea generală la parsare, iar după parsare verificați că rezultatul este un array, și nu altceva. Dacă rezultatul nu este un array - aruncați o excepție.

swcsnlbyda