Как обойти fatal error через try-catch на php?

Пользователь

от kaleigh , в категории: PHP , 2 года назад

Как обойти fatal error через try-catch на php?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от enid , 2 года назад

@kaleigh 

В PHP не всегда возможно обойти фатальные ошибки через try-catch блоки, потому что они не являются исключениями. Однако, есть несколько способов уменьшить влияние фатальных ошибок на работу приложения:

  1. Используйте функцию set_error_handler(), чтобы перехватывать ошибки, которые не являются фатальными. Это позволит вам обработать ошибки, которые иначе вызвали бы завершение выполнения скрипта.
  2. Проверяйте возвращаемое значение функций, которые могут вызвать фатальную ошибку, и выполняйте соответствующие действия в зависимости от результата.
  3. Используйте инструменты отладки, такие как Xdebug, чтобы быстро определить проблемные места в коде и устранить ошибки, которые вызывают фатальные ошибки.


Но в любом случае, рекомендуется настроить вашу среду разработки и сервер на то, чтобы выводить ошибки на экран (display_errors = On) и записывать их в логи. Это позволит быстро выявлять и устранять ошибки в вашем коде.

Пользователь

от ottilie.farrell , год назад

@kaleigh 

В PHP не предусмотрены специальные механизмы для обработки фатальных ошибок через try-catch блоки. Фатальные ошибки, такие как ошибки синтаксиса или ошибки доступа к несуществующим функциям, вызывают прерывание выполнения скрипта и не позволяют продолжить его выполнение.


Однако, есть некоторые способы минимизировать влияние фатальных ошибок на ваше приложение:

  1. Используйте функцию set_error_handler() для перехвата и обработки ошибок, которые не являются фатальными. Например, вы можете перехватывать и обрабатывать ошибки уровня E_WARNING или E_NOTICE. Обработчик ошибок может записывать ошибки в лог или выводить их на экран.
1
2
3
set_error_handler(function ($errno, $errstr, $errfile, $errline) {
    // Обработка ошибок
});


  1. Проверьте возвращаемое значение функций, которые могут вызывать фатальные ошибки. Например, если функция file_get_contents() не может открыть файл, она вернет false. Вы можете проверить это значение и выполнить соответствующие действия.
1
2
3
4
$content = file_get_contents('example.txt');
if ($content === false) {
    // Обработка ошибки
}


  1. Используйте инструменты отладки, такие как Xdebug, для быстрого определения места возникновения фатальных ошибок и устранения проблемных мест в коде.
  2. Настройте вашу среду разработки и сервер на вывод ошибок на экран и запись их в логи. Настройки можно изменить в php.ini файле или в коде с помощью функций error_reporting() и ini_set(). Это позволит быстро определить ошибки и их место в коде для последующего исправления.


Важно отметить, что фатальные ошибки могут быть вызваны серьезными проблемами в коде, и их обработка может быть затруднительной или невозможной. Поэтому рекомендуется тщательно тестировать и отлаживать ваш код, чтобы минимизировать возможность возникновения фатальных ошибок.