Можно ли отлавливать ошибки, которые не являются исключениями в Symfony? - PullRequest
0 голосов
/ 10 октября 2011

У меня есть блок 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,Действительно странное поведение.

Спасибо!

1 Ответ

3 голосов
/ 10 октября 2011

См. Ответ на Обработка ошибок как исключений.Лучшие методы? для способа генерировать исключения при возникновении ошибки.

...