PHP จับข้อผิดพลาดระดับ FATAL

อ้างอิงอย่างเป็นทางการ

เว็บไซต์อย่างเป็นทางการ set_error_handler register_shutdown_function

วิธีจับข้อผิดพลาดทั้งหมดอย่างสมบูรณ์แบบ

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

            set_error_handler('exception_handler');
register_shutdown_function('shutdown_handler');
function exception_handler($err_no, $err_str, $err_file, $err_line)
{
    error_reporting(0);
    // save error log
    // ...
    error_reporting(E_ALL);
}
function shutdown_handler()
{
    $error = error_get_last();
    if (empty($error)) {
        return;
    }
    error_reporting(0);
    // save error log
    // ...
    error_reporting(E_ALL);
}