PHP: как при возникновении ошибки выполнить действие

SN
На сайте с 04.07.2013
Offline
84
962

Есть здоровенный скрипт на php в нем цикл из нескольких тысяч интераций. Ошибка может возникнуть в любом месте скрипта. Как при возникновении любой ошибки(fatal, notice и прочие) сразу прервать выполнение скрипта и выполнить определенные действия (например записать ошибку в лог и завершить работу)?

LEOnidUKG
На сайте с 25.11.2006
Offline
1774
#1
✅ Мой Телеграм канал по SEO, оптимизации сайтов и серверов: https://t.me/leonidukgLIVE ✅ Качественное и рабочее размещение SEO статей СНГ и Бурж: https://getmanylinks.ru/ ✅ Настройка и оптимизация серверов https://getmanyspeed.ru/
danforth
На сайте с 18.12.2015
Offline
153
#2

Вам нужно проверять везде где может возникнуть ошибка, на верное или неверное значение.

Если значение неверное - выбрасываете Exception. Если верное, то ни делаете ничего.

Выбрасывать Exception так:


throw new Exception("Ошибка в блоке таком-то, функция такая-то");

После чего весь код помещаете в блок

try {

// тут ваш код
}

а в самом конце делаете так:


catch(Exception $e) {
echo $e->getMessage(); // выведет на экран то, что вы указали в блоке с выбрасыванием Exception'a.
// можете её записать в лог или ещё куда-то
}
Junior Web Developer
edogs software
На сайте с 15.12.2005
Offline
775
#3

danforth,

Нам крайне интересно как Вы собираетесь ловить Notice таким образом.

SeoNk:
Есть здоровенный скрипт на php в нем цикл из нескольких тысяч интераций. Ошибка может возникнуть в любом месте скрипта. Как при возникновении любой ошибки(fatal, notice и прочие) сразу прервать выполнение скрипта и выполнить определенные действия (например записать ошибку в лог и завершить работу)?

Поймать ошибку http://php.net/manual/ru/function.set-error-handler.php

Что бы более внятно выполнить действия, иногда нужно понять откуда ошибка пришла http://php.net/manual/ru/function.debug-backtrace.php

Разработка крупных и средних проектов. Можно с криптой. Разумные цены. Хорошее качество. Адекватный подход. Продаем lenovo legion в спб, дешевле магазинов, новые, запечатанные. Есть разные. skype: edogssoft
dkameleon
На сайте с 09.12.2005
Offline
386
#4

переопределить

set_error_handler

set_exception_handler

register_shutdown_function

и всё отлично словится

Дизайн интерьера (http://balabukha.com/)
ME
На сайте с 03.07.2017
Offline
66
#5

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий