エラー ハンドラの設定と復元
1 つの可能性は、呼び出しの前に独自のエラー ハンドラーを設定し、後で を使用して以前のエラー ハンドラーを復元すること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
すべての php エラーを例外に変えることができます。
set_error_handler(function($errno, $errstr, $errfile, $errline) {
// 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
設定をバイパスし、すべてのエラー (通知、警告など) をエラー ハンドラーに渡すことです。2 番目の引数を onset_error_handler()
に設定して、受信するエラーの種類を定義するか... = error_reporting()
、エラー ハンドラー内を使用して現在の設定にアクセスできます。
警告の抑制
dns_get_record()
もう 1 つの可能性は、@ 演算子で呼び出しを抑制し、その後の戻り値を確認することです。ただし、エラー/警告は抑制されるのではなく、処理されるようにトリガーされるため、これに反対することをお勧めします。