Я получаю эту ошибку, когда я запускаю локальный хост, если интернет отключен (если интернет подключен к нему нормально) Я хочу обработать эту ошибку, «ошибка может показать», но вы хотите обработать не фатальную ошибку на странице PHP.
Warning: SimpleXMLElement::__construct() [simplexmlelement.--construct]: php_network_getaddresses: getaddrinfo failed: No such host is known. in F:\xampp\htdocs\shoptpoint\sections\docType_head_index.php on line 30
но я пытаюсь справиться с использованием try-catch. Ниже мой код
$apiurl="http://publisher.usb.api.shopping.com/publisher/3.0/rest/GeneralSearch?apiKey=78b0db8a-0ee1-4939-a2f9-d3cd95ec0fcc&trackingId=7000610&categoryId='5855855'"; try{ new SimpleXMLElement($apiurl,null, true); }catch(Exception $e){ echo $e->getMessage(); }
Как обработать ошибку, и моя страница может выполнить конец проекта?
Используя set_error_handler, вы можете сделать следующее, чтобы преобразовать любые уведомления / предупреждения, вызванные SimpleXMLElement, в захватывающее Исключение.
Возьмите следующее: –
<?php function getData() { return new SimpleXMLElement('http://10.0.1.1', null, true); } $xml = getData(); /* PHP Warning: SimpleXMLElement::__construct(http://10.0.1.1): failed to open stream: Operation timed out PHP Warning: SimpleXMLElement::__construct(): I/O warning : failed to load external entity "http://10.0.1.1" PHP Fatal error: Uncaught exception 'Exception' with message 'String could not be parsed as XML' */
Посмотрите, как мы получаем 2 предупреждения перед выбросом исключения из SimpleXMLElement? Ну, мы можем конвертировать их в Exception следующим образом:
<?php function getData() { set_error_handler(function($errno, $errstr, $errfile, $errline) { throw new Exception($errstr, $errno); }); try { $xml = new SimpleXMLElement('http://10.0.1.1', null, true); }catch(Exception $e) { restore_error_handler(); throw $e; } return $xml; } $xml = getData(); /* PHP Fatal error: Uncaught exception 'Exception' with message 'SimpleXMLElement::__construct(http://10.0.1.1): failed to open stream: Operation timed out' */
Удачи,
Энтони.