У меня есть блок try-catch, который перебирает набор записей, подобных этому:
try {
foreach ( $json['location'] as $records ) {
$location = DnaExtractionTable::getInstance()->find($records['id']);
$location->setName($records['name']);
$location->setLatitude($records['latitude']);
$location->setLongitude($records['longitude']);
$location->setCountryId($records['country_id']);
$location->setRegionId($records['region_id']);
$location->setIslandId($records['island_id']);
$location->setRemarks($records['remarks']);
$location->save();
}
}
catch (Exception $e) {
...
}
Я могу перехватить каждое выброшенное исключение и продолжить без проблем.Но я также пытаюсь «перехватить» ошибки, например, когда в массиве $records
отсутствует индекс.
Возможно ли это сделать?Как я могу это сделать?Я безуспешно играю с set_X_handler
функциями.
ОБНОВЛЕНИЕ 1:
Следуя советам из комментариев и ответов, я решил реализовать функцию глобальной ошибки:
function exceptions_error_handler($severity, $message, $filename, $lineno) {
if (error_reporting() == 0) {
return;
}
if (error_reporting() & $severity) {
throw new ErrorException($message, 0, $severity, $filename, $lineno);
}
}
set_error_handler('exceptions_error_handler');
Но даже если я пытаюсь вызвать ошибку, код не выполняется.Поскольку я занимаюсь разработкой с Symfony, есть ли место для объявления этой функции?Может ли Symfony отключить или повлиять на функцию set_error_handler
?
ОБНОВЛЕНИЕ 2:
Symfony определенно возится с моими обработчиками ошибок и исключений.
Включение режима отладки, по-видимому, активирует пользовательский обработчик исключений Symfony, который переопределяет отчеты об ошибках.
Отключение режима отладки, похоже, обходило некоторые исключения, хотя мой блок try-catch
настроен на перехват общих объектов Exception
,Действительно странное поведение.
Спасибо!