PHP:
การจัดการกับข้อผิดพลาด

วิธีการ:

ใน PHP คุณสามารถจัดการข้อผิดพลาดโดยใช้บล็อค try-catch และคุณสามารถปรับแต่งกระบวนการด้วยตัวจัดการข้อผิดพลาดแบบกำหนดเองและข้อยกเว้น

// ตัวอย่างการใช้งาน try-catch พื้นฐาน
try {
  // ทำสิ่งที่มีความเสี่ยง
  $file = fopen("nonexistentfile.txt", "r");
} catch (Exception $e) {
  // จัดการกับข้อผิดพลาด
  echo "Error: " . $e->getMessage();
}

// การตั้งค่าตัวจัดการข้อผิดพลาดแบบกำหนดเอง
set_error_handler(function($severity, $message, $file, $line) {
  throw new ErrorException($message, 0, $severity, $file, $line);
});

// การใช้ข้อยกเว้น
class MyException extends Exception {}

try {
  // ทำอะไรบางอย่างและโยนข้อยกเว้นแบบกำหนดเอง
  throw new MyException("Custom error!");
} catch (MyException $e) {
  // จัดการกับข้อยกเว้นแบบกำหนดเอง
  echo $e->getMessage();
}

// ตัวอย่างผลลัพธ์:
// Error: fopen(nonexistentfile.txt): failed to open stream: No such file or directory
// Custom error!

การศึกษาลึก

ในอดีต ข้อผิดพลาดใน PHP มักจะเกี่ยวกับการเตือนและข้อความแจ้งเตือนที่ไม่หยุดการทำงานของสคริปต์ เมื่อภาษาพัฒนา เริ่มมีการจัดการข้อผิดพลาดแบบวัตถุที่เข้มงวดขึ้นผ่านคลาส Exception ที่เ introduced ใน PHP 5 หลังจากนั้น PHP 7 ออกมาพร้อมกับคลาส Error ที่แยกชัดเจนระหว่างข้อผิดพลาดและข้อยกเว้น

ก่อนมีบล็อค try-catch PHP ใช้ set_error_handler() ในการจัดการข้อผิดพลาด try-catch ทำให้โค้ดสะอาดและทันสมัยยิ่งขึ้น แต่ตัวจัดการข้อผิดพลาดแบบกำหนดเองยังมีความจำเป็น โดยเฉพาะสำหรับโค้ดเก่าหรือเมื่อคุณต้องจับข้อผิดพลาดที่ปกติจะไม่ใช่ข้อยกเว้น

อินเทอร์เฟส Throwable ใน PHP 7+ หมายความว่าไม่ว่าจะเป็น Error หรือ Exception คุณสามารถจับได้ทั้งคู่ นี่เป็นสิ่งที่สะดวกเพราะตอนนี้คุณไม่พลาดข้อผิดพลาดที่เกิดขึ้นในระหว่างการทำงานที่ยากต่อการติดตามก่อนหน้านี้

ทางเลือกนอกเหนือจากกลไกภายในสำหรับการจัดการข้อผิดพลาดของ PHP ได้แก่ ไลบรารีและเฟรมเวิร์คที่มีระบบการจัดการข้อผิดพลาดของตัวเอง ซึ่งมีคุณสมบัติเพิ่มเติมเช่น การบันทึกข้อผิดพลาดลงไฟล์หรือการแสดงหน้าข้อผิดพลาดที่เป็นมิตรกับผู้ใช้

ดูเพิ่มเติม