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);
}