⊗jsSpExcJSE 149 of 294 menu

Przykład wyjątku z JSON w JavaScript

Załóżmy, że skądś ze świata zewnętrznego przychodzi do nas JSON z produktem:

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

Wiesz już, że metoda JSON.parse będzie rzucać wyjątek, jeśli JSON jest nieprawidłowy. Przechwyćmy ten wyjątek:

try { let json = '{"product": "apple", "price": 1000, "amount": 5}'; let product = JSON.parse(json); alert(product.price * product.amount); } catch (error) { // w jakiś sposób reagujemy na wyjątek }

Jednak może się zdarzyć, że sam JSON jest poprawny, ale nie zawiera potrzebnych nam pól, na przykład brakuje pola z ceną:

let json = '{"product": "apple", "amount": 5}'; // brak ceny

Powiedzmy, że to także jest sytuacja wyjątkowa i w takim przypadku będziemy rzucać własny, niestandardowy wyjątek:

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: 'brak ceny lub ilości produktu' }; } } catch (error) { // w jakiś sposób reagujemy na wyjątek }

Teraz blok catch będzie otrzymywać dwa typy wyjątków: albo JSON jest całkowicie nieprawidłowy, i wtedy będzie wyjątek typu SyntaxError, albo JSON jest poprawny, ale nie zawiera potrzebnych nam pól, i wtedy będzie wyjątek typu ProductCostError.

Przechwyćmy te typy wyjątków w bloku 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: 'brak ceny lub ilości produktu' }; } } catch (error) { if (error.name == 'SyntaxError') { alert('Nieprawidłowy JSON produktu'); } else if (error.name == 'ProductCostError') { alert('Produkt nie ma ceny lub ilości'); } }

Załóżmy, że przychodzi do ciebie JSON w takiej postaci:

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

Sprawdź ten JSON pod kątem ogólnej poprawności during parsing, a po sparsowaniu sprawdź, czy w wyniku otrzymujemy tablicę, a nie coś innego. Jeśli w wyniku nie otrzymujemy tablicy - rzuć wyjątek.

Polski
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Wykorzystujemy pliki cookie do działania strony, analizy i personalizacji. Przetwarzanie danych odbywa się zgodnie z Polityką prywatności.
zaakceptuj wszystkie dostosuj odrzuć