มาพูดถึงความแตกต่างระหว่างข้อผิดพลาดและข้อยกเว้นกัน
- ไม่สามารถกู้คืนจากข้อผิดพลาดได้ ทางออกเดียวสำหรับข้อผิดพลาดคือการยุติการดำเนินการ ในขณะที่เราสามารถกู้คืนจาก Exception ได้โดยใช้บล็อก try-catch หรือส่งข้อยกเว้นกลับไปยังผู้โทร
- คุณจะไม่สามารถจัดการกับข้อผิดพลาดโดยใช้บล็อก try-catch แม้ว่าคุณจะจัดการกับมันโดยใช้บล็อก try-catch แอปพลิเคชันของคุณจะไม่กู้คืนหากเกิดขึ้น ในทางกลับกัน ข้อยกเว้นสามารถจัดการได้โดยใช้บล็อก try-catch และทำให้โปรแกรมไหลได้ตามปกติหากเกิดขึ้น
- ข้อยกเว้นเกี่ยวข้องกับแอปพลิเคชันในขณะที่ข้อผิดพลาดเกี่ยวข้องกับสภาพแวดล้อมที่แอปพลิเคชันกำลังทำงานอยู่
ตัวอย่าง
<?php try { $row->insert(); $inserted = true; } catch (Exception $e) { echo "There was an error inserting the row - ".$e->getMessage(); $inserted = false; } echo "Some more stuff"; ?>
คำอธิบาย
การทำงานของโปรแกรมจะดำเนินต่อไป - เนื่องจากคุณ 'พบ' ข้อยกเว้น ข้อยกเว้นจะถือเป็นข้อผิดพลาด เว้นแต่จะถูกจับได้ มันจะช่วยให้คุณดำเนินการโปรแกรมต่อไปหลังจากที่มันล้มเหลวเช่นกัน
ตัวอย่าง
<?php $foo = [bar]; echo $foo; ?>
คำอธิบาย
การทำงานของโปรแกรมจะหยุดด้วย PHP Notice:Array to string conversion