⊗jsSpExcJSE 149 of 294 menu

JSON išimčių pavyzdys JavaScript

Tarkime, iš išorinio pasaulio mums ateina JSON su produktu:

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

Jūs jau žinote, kad metodas JSON.parse mes išimtį, jei JSON yra neteisingas. Pagaukime šią išimtį:

try { let json = '{"product": "apple", "price": 1000, "amount": 5}'; let product = JSON.parse(json); alert(product.price * product.amount); } catch (error) { // kažkaip reaguojame į išimtį }

Tačiau gali būti taip, kad pats JSON yra teisingas, bet jame nėra mums reikalingų laukų, pavyzdžiui, nėra kainos lauko:

let json = '{"product": "apple", "amount": 5}'; // nėra kainos

Sakykime, kad tai taip pat yra išimtinė situacija ir tokiu atveju mes mesime savo vartotojo išimtį:

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: 'trūksta produkto kainos arba kiekio' }; } } catch (error) { // kažkaip reaguojame į išimtį }

Dabar blokas catch gaus du tipus išimčių: arba JSON apskritai neteisingas, ir tada bus SyntaxError tipo išimtis, arba JSON teisingas, bet jame nėra reikalingų mums laukų, ir tada bus ProductCostError tipo išimtis.

Bloke catch sugaukime šiuos išimčių tipus:

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: 'trūksta produkto kainos arba kiekio' }; } } catch (error) { if (error.name == 'SyntaxError') { alert('Netinkamas produkto JSON'); } else if (error.name == 'ProductCostError') { alert('Produktui trūksta kainos arba kiekio'); } }

Tarkime, jums ateina JSON tokio pavidalo:

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

Patikrinkite šio JSON bendrą teisingumą analizuojant, o po analizės patikrinkite, ar rezultate gaunamas masyvas, o ne kažkas kito. Jei rezultate gaunamas ne masyvas - iškirkite išimtį.

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