2016-10-22 3 views
2

Я использую Goutte (который использует Guzzle) для извлечения содержимого и мой сценарий завершается с ошибкой, хотя я бег в Try/улове:Невозможно обработать исключение с Try/уловом

Error: Client error: `GET http://example.com/C42C9CA3` resulted in a `403 Forbidden` response: 
<?xml version="1.0" encoding="iso-8859-1"?> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
     "htt (truncated...) 

Этого является то, что у меня есть:

use Goutte\Client; 
$HTTPconfig = [ "curl" => [ 
        CURLOPT_TIMEOUT => 60, 
        CURLOPT_CONNECTTIMEOUT => 60, 
        CURLOPT_SSL_VERIFYPEER => false, 
       ], 
       ['http_errors' => false] 
       ]; 
$HTTPclient = new \Goutte\Client; 
$HTTPclient->setClient(new \GuzzleHttp\Client($HTTPconfig)); 
$HTTPclient->setHeader('user-agent', 'Mozilla/5.0 (Windows NT 6.2; rv:20.0) Gecko/20121202 Firefox/20.0'); 

try { 
    $crawler = $HTTPclient->request('GET', $url); 
    $doc = $crawler->html(); 
} catch (Exception $e) { 
    write($e->getMessage()); 
    continue; 
} 
+0

Так что вывод не происходит из 'write ($ e-> getMessage());'? –

+0

@JonStirling Нет, я добавил try/catch позже, и он по-прежнему заканчивается этой ошибкой. – 3zzy

+0

И это определенно этот бит кода, который вызывает его? Я не вижу причин, по которым это может закончиться, и просто прекратите выполнение. –

ответ

3

Try с:

} catch (\Exception $e) { 

вместо:

} catch (Exception $e) { 

EDIT:

Если вы используете PHP-7 вы можете попытаться поймать Throwable всегда с косой черты, как следующие:

} catch (\Throwable $e) { 

Надеюсь, что эта помощь

+0

Да - особенно если у вас есть «пространство имен», в котором вы работаете. (Непонятно из вашего примера.) –

+0

Просто попробовал, он все тот же! Один плохой URL-адрес может быть таким дорожным блоком ах! – 3zzy

+0

@ 3zzy, если вы используете PHP7, проверьте мое обновление – Matteo

0

Удалить ['http_errors' => false] вариант. По умолчанию это true, и результаты с исключением для кодов ответа 4xx/5xx.

+0

Пробовал, все тот же. :( – 3zzy

Смежные вопросы