⊗jsSpExcJSE 149 of 294 menu

Példa kivételkezelésre JSON-nál JavaScriptben

Tegyük fel, hogy egy külső forrásból érkezik hozzánk egy JSON egy termékkel:

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

Azt már tudod, hogy a JSON.parse metódus kivételt fog dobni, ha a JSON helytelen. Kapjuk el ezt a kivételt:

try { let json = '{"product": "apple", "price": 1000, "amount": 5}'; let product = JSON.parse(json); alert(product.price * product.amount); } catch (error) { // valahogy reagálunk a kivételre }

Előfordulhat azonban, hogy maga a JSON helytelen, de nem tartalmazza a szükséges mezőket, például nincs ár mező:

let json = '{"product": "apple", "amount": 5}'; // nincs ár

Tegyük fel, hogy ez is kivételes helyzet, és ilyen esetben dobjunk saját felhasználói kivételt:

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: 'hiányzik az ár vagy a mennyiség a termékből' }; } } catch (error) { // valahogy reagálunk a kivételre }

Most a catch blokk két típusú kivételt fog kapni: vagy a JSON egyáltalán helytelen, és akkor SyntaxError típusú kivétel lesz, vagy a JSON helyes, de nem tartalmazza a szükséges mezőket, és akkor ProductCostError típusú kivétel lesz.

A catch blokkban kapjuk el ezeket a kivételtípusokat:

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: 'hiányzik az ár vagy a mennyiség a termékből' }; } } catch (error) { if (error.name == 'SyntaxError') { alert('Helytelen JSON formátumú a termék'); } else if (error.name == 'ProductCostError') { alert('A termékből hiányzik az ár vagy a mennyiség'); } }

Tegyük fel, hogy a következő formájú JSON érkezik hozzád:

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

Ellenőrizd ennek a JSON-nak az általános helyességét az elemzés során, majd az elemzés után ellenőrizd, hogy az eredmény egy tömb, és nem valami más. Ha az eredmény nem tömb - dobj egy kivételt.

idenbytrda