แนะนำตัว
ก่อนหน้าเวอร์ชัน 7 นั้น PHP parser ใช้ในการรายงานข้อผิดพลาดเพื่อตอบสนองต่อเงื่อนไขต่างๆ ข้อผิดพลาดแต่ละข้อเคยเป็นประเภทที่กำหนดไว้ล่วงหน้าบางประเภท PHP7 ได้เปลี่ยนกลไกการรายงานข้อผิดพลาด แทนที่จะรายงานข้อผิดพลาดแบบเดิม ขณะนี้ข้อผิดพลาดส่วนใหญ่ได้รับการรายงานโดยการโยนข้อยกเว้นข้อผิดพลาด
หากข้อยกเว้นข้อผิดพลาดไม่สามารถจัดการได้ จะรายงานข้อผิดพลาดร้ายแรงและจะได้รับการจัดการเหมือนเงื่อนไขข้อผิดพลาดแบบเดิม ลำดับข้อผิดพลาดของ PHP เริ่มต้นจาก Throwable อินเตอร์เฟซ. ข้อผิดพลาดที่กำหนดไว้ล่วงหน้าทั้งหมด เช่น ArithmeticError , AssertionError , ข้อผิดพลาดในการคอมไพล์ และ TypeError เป็นคลาสที่ใช้ Throwable iterface ข้อยกเว้นใน PHP 7 ยังใช้อินเทอร์เฟซ Throwable
ส่วนต่อประสานที่โยนได้ทำหน้าที่เป็นฐานสำหรับวัตถุใด ๆ ที่สามารถส่งผ่านคำสั่งโยน ซึ่งรวมถึง ข้อผิดพลาด และ ข้อยกเว้น วัตถุ คลาสที่กำหนดโดยผู้ใช้ไม่สามารถใช้อินเทอร์เฟซ Throwable โดยตรง ในการประกาศคลาสข้อยกเว้นที่ผู้ใช้กำหนด จะต้องขยาย ข้อยกเว้น ชั้นเรียน
การจัดการข้อยกเว้นของ PHP ประกอบด้วย โยน , จับ , ลอง งบ. ในการยกวัตถุยกเว้นมี โยน คำสำคัญ. ข้อยกเว้นที่ส่งออกมาจะถูกประมวลผลโดย จับ บล็อก. โค้ด PHP ที่อาจเสี่ยงต่อข้อยกเว้นอยู่ใน ลอง บล็อค
อาจมีบล็อก catch อย่างน้อยหนึ่งบล็อกเพื่อตรวจจับอินสแตนซ์ที่แตกต่างกันของคลาส Exception เมื่อไม่มีข้อยกเว้นเกิดขึ้นในบล็อกการลอง การดำเนินการปกติจะดำเนินต่อไปหลังจากบล็อกที่ดักจับล่าสุด อย่างไรก็ตาม เมื่อมีการโยนข้อยกเว้นภายในบล็อก try แทนที่จะเรียกใช้คำสั่ง nest PHP จะพยายามค้นหา catch block tht ที่ตรงกับประเภทของข้อยกเว้นที่จะจัดการ หากไม่มีการกำหนด catch block ที่ตรงกัน PHP parser จะรายงาน ข้อผิดพลาดร้ายแรง ด้วย Uncaught Exception ข้อความ
คุณอาจให้ สุดท้าย บล็อกหลังหรือแทนที่จะบล็อก catch โค้ดในบล็อกสุดท้ายจะถูกดำเนินการเสมอ โดยไม่คำนึงถึงว่าข้อยกเว้นจะเกิดขึ้นภายใน try block หรือไม่