⊗jsSpExcPrb 150 of 294 menu

การโยนข้อยกเว้นใน JavaScript

พิจารณาบล็อก catch ของงานที่มี JSON ของผลิตภัณฑ์:

catch (error) { if (error.name == 'SyntaxError') { alert('JSON ของผลิตภัณฑ์ไม่ถูกต้อง'); } else if (error.name == 'ProductCostError') { alert('ผลิตภัณฑ์ขาดราคาหรือปริมาณ'); } }

อย่างที่คุณเห็น เราจับข้อยกเว้นสองอย่างที่เราวางแผนไว้และตอบสนองต่อมัน แต่จะเกิดอะไรขึ้นหากมีข้อยกเว้นประเภทอื่นที่เราไม่ได้คาดคิด? ในกรณีนี้ มันจะเข้ามาในบล็อก catch เช่นกัน แต่ จะไม่มีการตอบสนองใด ๆ ตามมา เนื่องจาก ข้อยกเว้นที่มีประเภทอื่นจะไม่เข้าเงื่อนไขในคำสั่ง if ของเรา

เมื่อฉันบอกว่าจะไม่มีการตอบสนองใด ๆ ฉันหมายความว่าจริง ๆ แล้วจะไม่มีอะไรเลย: แม้แต่ข้อผิดพลาดในคอนโซลก็จะไม่ปรากฏ โค้ดของเราก็จะไม่ทำงานโดยไม่ส่งเสียงใด ๆ

ดังนั้นจึงมีกฎดังนี้: โค้ดของคุณ ควรจับเฉพาะข้อยกเว้นที่ รู้วิธีจัดการเท่านั้น หากข้อยกเว้น ไม่เป็นที่รู้จัก ต้อง โยน มันต่อไปโดยใช้ throw ในกรณีนี้ ข้างบนจะมีผู้ที่เข้าใจมากกว่าจับมันไว้ หรือข้อยกเว้นจะปรากฏเป็นข้อผิดพลาดในคอนโซล

มาแก้ไขโค้ดของเรากัน:

catch (error) { if (error.name == 'SyntaxError') { alert('JSON ของผลิตภัณฑ์ไม่ถูกต้อง'); } else if (error.name == 'ProductCostError') { alert('ผลิตภัณฑ์ขาดราคาหรือปริมาณ'); } else { throw error; // โยนข้อยกเว้นต่อไป } }

มีโค้ดต่อไปนี้:

try { let arr = JSON.parse(json); for (let i = 0; i < arr.length; i++) { localStorage.setItem(i, arr[i]); } } catch (error) { if (error.name == 'QuotaExceededError') { alert('พื้นที่ในที่เก็บข้อมูลหมด'); } if (error.name == 'SyntaxError') { alert('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
เราใช้คุกกี้สำหรับการทำงานของเว็บไซต์ การวิเคราะห์ และการปรับเนื้อหาให้เหมาะสมส่วนบุคคล การประมวลผลข้อมูลเกิดขึ้นตาม นโยบายความเป็นส่วนตัว.
ยอมรับทั้งหมด ปรับแต่ง ปฏิเสธ