Setel dan pulihkan penangan kesalahan
Satu kemungkinan adalah untuk mengatur penangan kesalahan Anda sendiri sebelum panggilan dan mengembalikan penangan kesalahan sebelumnya dengan restore_error_handler()
.
set_error_handler(function() { /* ignore errors */ });
dns_get_record();
restore_error_handler();
Anda dapat membangun ide ini dan menulis penangan kesalahan yang dapat digunakan kembali yang mencatat kesalahan Anda.
set_error_handler([$logger, 'onSilencedError']);
dns_get_record();
restore_error_handler();
Mengubah kesalahan menjadi pengecualian
Anda bisa menggunakan set_error_handler()
dan ErrorException
kelas untuk mengubah semua kesalahan php menjadi pengecualian.
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) {
// ...
}
Hal penting yang perlu diperhatikan ketika menggunakan penangan kesalahan Anda sendiri adalah bahwa ia akan melewati error_reporting
pengaturan dan meneruskan semua kesalahan (pemberitahuan, peringatan, dll.) Ke penangan kesalahan Anda. Anda dapat mengaktifkan argumen kedua set_error_handler()
untuk menentukan jenis kesalahan yang ingin Anda terima, atau mengakses pengaturan saat ini menggunakan ... = error_reporting()
di dalam penangan kesalahan.
Menekan peringatan itu
Kemungkinan lain adalah untuk menekan panggilan dengan operator @ dan memeriksa nilai balik dns_get_record()
sesudahnya. Tapi saya menyarankan hal ini karena kesalahan / peringatan dipicu untuk ditangani, bukan untuk ditekan.