try {
$fp = fsockopen($site, $port, $errno, $errstr, 2);
}
catch(Exception $ex) {
echo 'error';
}
为什么catch
不工作,而我看到fsockopen
给出了警告
注意:fsockopen():php_network_getaddresses:getaddrinfo失败:没有这样的主机是已知的。
和
注意:fsockopen():无法连接到www.myrandsitedf.net:80(php_network_getaddresses:getaddrinfo失败:没有这样的主机是已知的。)我知道我可以使用
@来抑制错误/警告消息,但我不认为这是处理错误的正确方法。 此外,我的主机上的Cronjob不允许PHP文件中有错误,
@`不能解决这个问题。
3条答案
按热度按时间5ssjco0h1#
你必须区分
exceptions
和errors
。如果你想将错误(警告等)转换为异常,这样它们就可以在catch中被捕获,你应该注册一个error_handler
,它将错误转换为异常:2admgd592#
您必须使用具有全局命名空间的异常。
试试这个代码:
这将在PHP 5.3或更高版本中工作。
谢谢.
iyr7buue3#
简单而正确的方法是