//http://stackoverflow.com/questions/1241728/can-i-try-catch-a-warningOne possibility is to set your own error handler before the call and restore the previous error handler later with restore_error_handler(). set_error_handler(function() { /* ignore errors */ }); dns_get_record(); restore_error_handler(); You could build on this idea and write a re-usable error handler that logs the errors for you. set_error_handler([$logger, ‘onSilencedError‘]); dns_get_record(); restore_error_handler(); Turning errors into exceptions You can use set_error_handler() and the ErrorException class to turn all php errors into exceptions. set_error_handler(function($errno, $errstr, $errfile, $errline, array $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) { // ... } The important thing to note when using your own error handler is that it will bypass the error_reporting setting and pass all errors (notices, warnings, etc.) to your error handler. You can set a second argument on set_error_handler() to define which error types you want to receive, or access the current setting using ... = error_reporting() inside the error handler.
时间: 2024-10-12 18:18:54