⊗jsSpExcJSE 149 of 294 menu

자바스크립트에서 JSON 예외 처리 예시

외부 세계로부터 다음과 같은 제품 정보 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
우리는 웹사이트 운영, 분석 및 개인화를 위해 쿠키를 사용합니다. 데이터 처리는 개인정보 처리방침에 따라 이루어집니다.
모두 수락 설정 거부