2015-02-01 4 views
0

Я запрашивая Google API, который имеет абсурдно низкий предел 100/день и я получаю:Продолжить даже после того, как Фатальная ошибка: Uncaught исключение

Fatal error: Uncaught exception 'Google_Service_Exception' with message 'Error calling GET ... 

.. и сценарий не откажет делать ничего после этой точки.

Как предотвратить его сбой и, по крайней мере, сохранить любые данные, полученные до этой точки? Я сохраняю данные в массиве:

function searchImages($service, $optParams, $query) { 
    $results = $service->cse->listCse($query, $optParams); 
    return $results; 
} 
$descriptionSearch = searchImages($customsearchService, $customsearchService_optParams, $descriptions[$i]); 
foreach ($descriptionSearch->items as $item) { 
    array_push($list[$item_codes[$i]], strtok($item->link,'?')); 
} 
+0

Самый лучший вариант, чтобы обернуть ваш запрос в течение попробовать/поймать блока, так что вы можете обработать исключение .... это только фатальным, если вам не делайте этого –

+0

Итак 'try {foreach ...} catch (Exception $ e) {echo 'Message:'. $ e-> getMessage(); } '? – 3zzy

+0

блок try/catch должен быть вставлен в вашу функцию searchImages() ... поделитесь с нами содержимым этой функции –

ответ

1
function searchImages($service, $optParams, $query) { 
    try { 
     $results = $service->cse->listCse($query, $optParams); 
    }catch (Exception $e) { 
     // should log this exception... you can use Log4PHP 
     return NULL; 
    } 
    return $results; 
} 

$descriptionSearch = searchImages($customsearchService,customsearchService_optParams, $descriptions[$i]); 
if (!is_null($descriptionSearch)) { 
    foreach ($descriptionSearch->items as $item) { 
     array_push($list[$item_codes[$i]], strtok($item->link,'?')); 
    } 
} 
Смежные вопросы