ตั้งค่าและเรียกคืนตัวจัดการข้อผิดพลาด
restore_error_handler()
หนึ่งเป็นไปได้คือการตั้งค่าจัดการข้อผิดพลาดของตัวเองก่อนที่จะเรียกและเรียกคืนจัดการข้อผิดพลาดที่ผ่านมาในภายหลังด้วย
set_error_handler(function() { /* ignore errors */ });
dns_get_record();
restore_error_handler();
คุณสามารถสร้างแนวคิดนี้และเขียนตัวจัดการข้อผิดพลาดที่สามารถใช้งานซ้ำได้ซึ่งจะบันทึกข้อผิดพลาดให้คุณ
set_error_handler([$logger, 'onSilencedError']);
dns_get_record();
restore_error_handler();
เปลี่ยนข้อผิดพลาดเป็นข้อยกเว้น
คุณสามารถใช้set_error_handler()
และErrorException
class เพื่อเปลี่ยนข้อผิดพลาด php ทั้งหมดเป็นข้อยกเว้น
set_error_handler(function($errno, $errstr, $errfile, $errline, $errcontext) {
// error was suppressed with the @-operator
if (0 === error_reporting()) {
return false;
}
throw new ErrorException($errstr, 0, $errno, $errfile, $errline);
});
try {
dns_get_record();
} catch (ErrorException $e) {
// ...
}
สิ่งสำคัญที่ควรทราบเมื่อใช้ตัวจัดการข้อผิดพลาดของคุณเองคือมันจะข้ามการerror_reporting
ตั้งค่าและส่งข้อผิดพลาดทั้งหมด (การแจ้งเตือนคำเตือน ฯลฯ ) ไปยังตัวจัดการข้อผิดพลาดของคุณ คุณสามารถตั้งค่าอาร์กิวเมนต์ที่สองset_error_handler()
เพื่อกำหนดประเภทข้อผิดพลาดที่คุณต้องการรับหรือเข้าถึงการตั้งค่าปัจจุบันโดยใช้... = error_reporting()
ภายในตัวจัดการข้อผิดพลาด
ระงับการเตือน
ความเป็นไปได้อีกอย่างคือการระงับการโทรด้วยตัวดำเนินการ @ และตรวจสอบค่าส่งคืนdns_get_record()
หลังจากนั้น แต่ฉันขอแนะนำเรื่องนี้เนื่องจากข้อผิดพลาด / คำเตือนถูกกระตุ้นให้จัดการไม่ถูกระงับ