⊗jsSpExcJSE 149 of 294 menu

ตัวอย่างการขว้าง Exception ด้วย JSON ใน JavaScript

สมมติว่า JSON กับสินค้ามาถึงเราจากที่ไหนสักแห่งในโลกภายนอก:

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

คุณทราบดีอยู่แล้วว่าเมธอด JSON.parse จะ ขว้าง Exception ถ้า JSON ไม่ถูกต้อง ลองจับ Exception นี้ดู:

try { let json = '{"product": "apple", "price": 1000, "amount": 5}'; let product = JSON.parse(json); alert(product.price * product.amount); } catch (error) { // ตอบสนองต่อ Exception แบบใดแบบหนึ่ง }

อย่างไรก็ตาม อาจเป็นไปได้ว่า JSON นั้น ถูกต้องในตัวของมันเอง แต่ไม่มีฟิลด์ที่เราต้องการ ตัวอย่างเช่น ไม่มีฟิลด์ราคา:

let json = '{"product": "apple", "amount": 5}'; // ไม่มีราคา

สมมติว่านี่ก็เป็นสถานการณ์พิเศษเช่นกัน และในกรณีเช่นนี้เราจะขว้าง Exception ที่ผู้ใช้กำหนดเองของเรา:

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) { // ตอบสนองต่อ Exception แบบใดแบบหนึ่ง }

ตอนนี้บล็อก catch จะได้รับ Exception สองประเภท คือ: ถ้า JSON ไม่ถูกต้องโดยสิ้นเชิง, แล้วก็จะได้ Exception ประเภท SyntaxError, หรือถ้า JSON ถูกต้อง แต่ไม่มีฟิลด์ ที่เราต้องการ แล้วก็จะได้ Exception ประเภท ProductCostError

ลองในบล็อก catch จับประเภท Exception เหล่านี้ ดู:

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 นี้ว่าถูกต้องโดยรวมหรือไม่ ในการแยกวิเคราะห์ และหลังจากการแยกวิเคราะห์ ให้ตรวจสอบว่า ผลลัพธ์ที่ได้เป็นอาร์เรย์ ไม่ใช่สิ่งอื่น ถ้าผลลัพธ์ที่ได้ไม่ใช่อาร์เรย์ - ให้ขว้าง Exception

ไทย
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
เราใช้คุกกี้สำหรับการทำงานของเว็บไซต์ การวิเคราะห์ และการปรับเนื้อหาให้เหมาะสมส่วนบุคคล การประมวลผลข้อมูลเกิดขึ้นตาม นโยบายความเป็นส่วนตัว.
ยอมรับทั้งหมด ปรับแต่ง ปฏิเสธ