ประเภทของสถานการณ์ที่เกิดขึ้นใน JavaScript
ใน JavaScript มีสถานการณ์ที่ทำให้เกิดข้อยกเว้นน้อยมาก ประการแรก เพียงเพราะว่ามีตำแหน่งให้เกิดข้อยกเว้นน้อยมาก
ประการที่สอง เพราะว่าตัวภาษานั้น "ให้อภัยทุกอย่าง": มองข้ามหลายสิ่งหลายอย่างไป เช่น การหารด้วยศูนย์หรือโค้ด HTML ที่ไม่ถูกต้อง แม้ว่าคุณจะระบุเส้นทางไปยังรูปภาพที่ต้องการโหลดผิดพลาด JavaScript ก็จะให้อภัยคุณในเรื่องนั้นและไม่นับว่าเป็นข้อยกเว้น
อย่างไรก็ตาม มีสถานการณ์พิเศษอยู่ เราจะวิเคราะห์สองสถานการณ์ที่ง่ายที่สุดและใช้เป็นตัวอย่างเพื่อศึกษาการทำงานกับข้อยกเว้นใน JavaScript
ข้อยกเว้นแรกเกิดขึ้นเมื่อเราต้องการแยกวิเคราะห์ JSON ที่ไม่ถูกต้อง:
let data = JSON.parse('{1,2,3,4,5}'); // JSON นี้ไม่ถูกต้อง
และข้อยกเว้นที่สองเกิดขึ้นเมื่อที่เก็บข้อมูลท้องถิ่นที่จัดสรรให้กับเว็บไซต์ของเรามีพื้นที่เต็ม (เกินกว่า 5 เมกะไบต์) ลองทำให้เกิดข้อยกเว้นดังกล่าวแบบตั้งใจกัน:
let str = '';
for (let i = 1; i <= 6 * 10 ** 6; i++) { // สร้างสตริงขนาดมากกว่า 5 MB
str += '+';
}
localStorage.setItem('key', str); // พยายามเขียนลงที่เก็บข้อมูล
JavaScript มีปฏิกิริยาอย่างไรต่อสถานการณ์พิเศษเช่นนี้? มันเพียงแสดงข้อผิดพลาดในคอนโซลและหยุดการดำเนินการสคริปต์ต่อไป
งานของเราในฐานะโปรแกรมเมอร์คือการตรวจจับสถานการณ์ดังกล่าวและจัดการกับมันในบางวิธี ไม่ปล่อยให้โปรแกรมหยุดการทำงานโดยสิ้นเชิง สำหรับการนี้มีโครงสร้างพิเศษ try-catch ซึ่งเราจะวิเคราะห์ในบทเรียนต่อไป
สร้างสตริงที่มีขนาดใหญ่พอและพยายามเขียนลงในที่เก็บข้อมูลท้องถิ่น ตรวจสอบให้แน่ใจว่าคอนโซลจะแสดงข้อผิดพลาด
พยายามแยกวิเคราะห์ JSON ที่ไม่ถูกต้อง ตรวจสอบให้แน่ใจว่าคอนโซลจะแสดงข้อผิดพลาด