ข้อยกเว้น (Exception) คือปัญหาที่เกิดขึ้นระหว่างการทำงานของโปรแกรม เมื่อเกิดข้อยกเว้น โค้ดหลังจากคำสั่งที่ทำให้เกิดข้อยกเว้นจะไม่ถูกประมวลผล และ PHP จะพยายามหาบล็อก catch แรกที่ตรงกัน หากไม่มีการจับข้อยกเว้น PHP จะแสดง Fatal Error พร้อมข้อความ "Uncaught Exception"
ไวยากรณ์
try {
print "this is our try block";
throw new Exception();
} catch (Exception $e) {
print "something went wrong, caught yah! \n";
} finally {
print "this part is always executed";
}
ตัวอย่าง
<?php
function printdata($data) {
try {
// ถ้า var เท่ากับ 6 จะเข้าเงื่อนไข if
if($data == 6) {
// ถ้า var เท่ากับ 0 จะโยนข้อยกเว้น
throw new Exception('Number is six.');
echo "\n After throw (It will never be executed)";
}
}
// เมื่อข้อยกเว้นถูกโยนจาก try block
catch(Exception $e){
echo "\n Exception Caught", $e->getMessage();
}
// บล็อกนี้จะทำงานเสมอ
finally{
echo "\n Final block will be always executed";
}
}
// ไม่มีข้อยกเว่นเกิดขึ้นที่นี่
printdata(0);
// ข้อยกเว่นจะเกิดขึ้นที่นี่
printdata(6);
?>
ผลลัพธ์
Final block will be always executed Exception CaughtNumber is six. Final block will be always executed
หมายเหตุ
เพื่อจัดการข้อยกเว่น โค้ดต้องอยู่ในบล็อก try แต่ละ try ต้องมี catch อย่างน้อยหนึ่งบล็อก สามารถใช้ catch หลายบล็อกเพื่อจับคลาสข้อยกเว่นที่ต่างกันได้