⊗jsSpExcJSE 149 of 294 menu

Пример за изключение с JSON в JavaScript

Да предположим, че от някъде от външния свят към нас идва JSON с продукт:

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

Вече знаете, че методът JSON.parse ще хвърли изключение, ако JSON е некоректен. Нека хванем това изключение:

try { let json = '{"product": "apple", "price": 1000, "amount": 5}'; let product = JSON.parse(json); alert(product.price * product.amount); } catch (error) { // реагираме по някакъв начин на изключението }

Въпреки това, може да се случи самият JSON да е коректен, но да не съдържа нужните ни полета, например липсва поле за цена:

let json = '{"product": "apple", "amount": 5}'; // няма цена

Нека приемем, че това също е изключителна ситуация и в такъв случай ще хвърляме собствено потребителско изключение:

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: 'липсва цена или количество за продукта' }; } } catch (error) { // реагираме по някакъв начин на изключението }

Сега блокът catch ще получава два типа изключения: или JSON е напълно некоректен, и тогава ще има изключение от тип SyntaxError, или JSON е коректен, но не съдържа нужните ни полета, и тогава ще има изключение от тип ProductCostError.

Нека в блока 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: 'липсва цена или количество за продукта' }; } } catch (error) { if (error.name == 'SyntaxError') { alert('Некоректен JSON за продукт'); } else if (error.name == 'ProductCostError') { alert('За продукта липсва цена или количество'); } }

Да предположим, че към вас пристига JSON със следния вид:

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

Проверете този JSON за обща коректност при парсване, а след парсването проверете, че в резултат се получава масив, а не нещо друго. Ако в резултат се получи не масив - хвърлете изключение.

Български
AfrikaansAzərbaycanবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Ние използваме бисквитки за работата на сайта, анализ и персонализация. Обработката на данни се извършва в съответствие с Политика за поверителност.
приемам всички настройки отхвърляне