ฟังก์ชัน set_error_handler() ตั้งค่าฟังก์ชันการจัดการข้อผิดพลาดที่ผู้ใช้กำหนด
ฟังก์ชันนี้ใช้เพื่อสร้างวิธีการจัดการข้อผิดพลาดของผู้ใช้เองในระหว่างรันไทม์
ฟังก์ชันนี้ส่งคืนตัวจัดการข้อผิดพลาดเก่าหรือ NULL เมื่อเกิดความล้มเหลว
set_error_handler (error_function, error_types)
พารามิเตอร์ | อธิบาย |
---|---|
error_function | ที่จำเป็น. ระบุฟังก์ชันที่จะรันเมื่อมีข้อผิดพลาดเกิดขึ้น |
error_types | ไม่จำเป็น. ระบุระดับการรายงานข้อผิดพลาดที่ผู้ใช้กำหนดข้อผิดพลาดที่จะแสดง ค่าเริ่มต้นคือ "E_ALL" ระดับการรายงานข้อผิดพลาดที่เป็นไปได้มีรายละเอียดอยู่ในตารางด้านล่าง |
error_function(error_level,error_message,error_file,error_line,error_context)
พารามิเตอร์ | อธิบาย |
---|---|
error_level | ที่จำเป็น. ระบุระดับการรายงานข้อผิดพลาดสำหรับข้อผิดพลาดที่ผู้ใช้กำหนด ต้องเป็นตัวเลขค่า ระดับการรายงานข้อผิดพลาดที่เป็นไปได้มีรายละเอียดอยู่ในตารางด้านล่าง |
ข้อผิดพลาด_ข้อความ | ที่จำเป็น. ระบุข้อความแสดงข้อผิดพลาดสำหรับข้อผิดพลาดที่ผู้ใช้กำหนด |
error_file | ไม่จำเป็น. ระบุชื่อไฟล์ที่เกิดข้อผิดพลาด |
error_line | ไม่จำเป็น. ระบุหมายเลขบรรทัดที่เกิดข้อผิดพลาด |
error_context | ไม่จำเป็น. ระบุอาร์เรย์ที่ชี้ไปยังตารางสัญลักษณ์ที่ใช้งานอยู่ซึ่งมีข้อผิดพลาดเกิดขึ้น กล่าวอีกนัยหนึ่ง error_context จะมีอาร์เรย์ที่อธิบายขอบเขตที่มีอยู่ซึ่งตัวแปรแต่ละตัวส่งข้อผิดพลาด |
ค่า | คงที่ | อธิบาย |
---|---|---|
2 | E_คำเตือน | ข้อผิดพลาดรันไทม์ที่ไม่ร้ายแรง การดำเนินการสคริปต์ไม่หยุด |
8 | E_ประกาศ | การแจ้งเตือนรันไทม์ การค้นพบสคริปต์อาจเป็นจุดบกพร่อง แต่ก็สามารถเกิดขึ้นได้เมื่อเรียกใช้สคริปต์ตามปกติ |
256 | E_USER_ERROR | ข้อผิดพลาดร้ายแรงที่ผู้ใช้สร้างขึ้น นี่เป็นเหมือนกับ E_ERROR ที่สร้างโดยโปรแกรมเมอร์โดยใช้ฟังก์ชัน PHP trigger_error() |
512 | E_USER_WARNING | ข้อผิดพลาดที่ไม่ร้ายแรงที่ผู้ใช้สร้างขึ้น นี่เป็นเหมือน E_WARNING ที่สร้างโดยโปรแกรมเมอร์โดยใช้ฟังก์ชัน PHP trigger_error() |
1,024 | E_USER_ประกาศ | การแจ้งเตือนที่ผู้ใช้สร้างขึ้น นี่เป็นเหมือนกับ E_NOTICE ที่สร้างโดยโปรแกรมเมอร์โดยใช้ฟังก์ชัน PHP trigger_error() |
4096 | E_RECOVERABLE_ERROR | ข้อผิดพลาดร้ายแรงที่ดักจับได้ นี่เป็นเหมือน E_ERROR ที่สามารถจับได้โดยตัวจัดการที่ผู้ใช้กำหนด (ดูที่ set_error_handler()) |
8191 | อี_ออล | ระดับข้อผิดพลาดและคำเตือนทั้งหมด ยกเว้น E_STRICT (ตั้งแต่ PHP 6.0, E_STRICT จะเป็นส่วนหนึ่งของ E_ALL) |
เคล็ดลับ: หากใช้ฟังก์ชันนี้ ฟังก์ชันการจัดการข้อผิดพลาด PHP มาตรฐานจะถูกข้ามไปโดยสิ้นเชิง หากจำเป็น ตัวจัดการข้อผิดพลาดที่ผู้ใช้กำหนดจะต้องยุติสคริปต์ (die()) หมายเหตุ: หากมีข้อผิดพลาดเกิดขึ้นก่อนที่สคริปต์จะถูกเรียกใช้งาน ตัวจัดการข้อผิดพลาดแบบกำหนดเองจะไม่ถูกใช้เนื่องจากโปรแกรมแบบกำหนดเองยังไม่ได้ลงทะเบียนในขณะนั้น
<?php//ฟังก์ชันตัวจัดการข้อผิดพลาด function customError($errno, $errstr, $errfile, $errline) { echo "<b>ข้อผิดพลาดที่กำหนดเอง:</b> [$errno] $errstr<br />"; เกิดข้อผิดพลาดในบรรทัด $errline ใน $errfile<br />"; echo "Ending Script"; die(); }//set error handlerset_error_handler("customError");$test=2;//trigger errorif ($test>1) { trigger_error("ข้อผิดพลาดแบบกำหนดเองถูกทริกเกอร์"); }?>
ผลลัพธ์ของโค้ดด้านบนมีลักษณะดังนี้:
ข้อผิดพลาดที่กำหนดเอง: [1024] ข้อผิดพลาดที่กำหนดเองได้รับการทริกเกอร์ข้อผิดพลาดในบรรทัด 19 ใน C: webfoldertest.phpEnding Script