try {
$fp = fsockopen($site, $port, $errno, $errstr, 2);
}
catch(Exception $ex) {
echo 'error';
}
为什么catch
无效,而我看到fsockopen
Warning: fsockopen(): php_network_getaddresses: getaddrinfo failed: No such host is known.
和
Warning: fsockopen(): unable to connect to www.myrandsitedf.net:80 (php_network_getaddresses: getaddrinfo failed: No such host is known. )
我知道我可以使用@
来抑制错误/警告消息,但我认为这不是处理错误的正确方法。
我宿主的Cronjob也不允许PHP文件中有错误,@
无法解决。
答案 0 :(得分:1)
您必须区分exceptions
和errors
。
如果您希望将错误(警告等)转换为异常,以便可以捕获它们,您应该注册一个将错误转换为异常的error_handler
:
function error_handler($errno, $errstr, $errfile, $errline)
{
if( ($errno & error_reporting()) > 0 )
throw new ErrorException($errstr, 500, $errno, $errfile, $errline);
else
return false;
}
set_error_handler('error_handler');
答案 1 :(得分:0)
做到这一点的简单而正确的方法
noexcept