Суть обработки ошибок

Zavus

Новичок
Читал я читал целый день про это дело, и натыкался на разные хитрожопые способы обработки, которые пока не смог осилить, но подскажите, правильно ли я понял суть, общую картину?

Вот:
- Включить лог ошибок . Если нужна какая-то доп.информация о них или оповещение по почте - писать свое логгирование

- Вывод на экран отключить (если сайт запущен в сеть).

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

- для фатальных ошибок регистрируем какую-нибудь shut_down-функцию , в ней проверяем, если ошибка фатальная, то говорим пользователю, например, 'Зайди позже'

Если я неправильно понял, объясните пожалуйста, общие положения.
 
Последнее редактирование:

WMix

герр M:)ller
Партнер клуба
Ошибки "не фатальные" нужно исправлять как можно сразу иначе не понятно ошибка это или просто бестолковость разработчика. Для этого превращай их в "фатальные" на этапе строения, чтоб все крушилось. "Фатальных" ошибок в продакшине быть не должно, могут быть "исключительные ситуации", покрывай тестами. Что бы не произошло сайт не должен ломаться, все должно быть окуратно. Про остальное я суть вопроса не понимаю. Возьми нормальный фреймворк чтоб "хитрожопых" способов небыло.
 

AnrDaemon

Продвинутый новичок
Суть ОБРАБОТКИ ошибок в их ИСПРАВЛЕНИИ. Других "сутей" нет.
А как ты будешь обнаружать - это уже твоё дело.
 

Фанат

oncle terrible
Команда форума
Ты все правильно понимаешь, только соглашусь с предыдущим оратором что нефатальных ошибок не бывает.
Любая ошибка может повлиять на корректность результата, так что лучше перебдеть.
Так что во всем мире принято, чтобы
1. при разработке сайт никаких ошибок он не выдавал.
2. на живом сайте при возникновении любой ошибки действуем так, как будто она фатальная. И исправляем ее как можно скорее.

про "Фатальных" ошибок в продакшине быть не должно" - это сказки. Не слушай дядю, он шнапса перебрал. Разумеется, бывают, и любой сайт их время отвремени показывает, от википедии до фейсбука.
 

WMix

герр M:)ller
Партнер клуба
Мы люди мы можем ошибаться, но в принципе, придумай возможность появления фатал еррор которую бы заранее нельзя было придусмотреть?
 

Фанат

oncle terrible
Команда форума
Мы люди мы можем ошибаться, но в принципе, придумай возможность появления фатал еррор которую бы заранее нельзя было придусмотреть?
Не понимаю, к чему твой вопрос, но например пьяный одмин поменял настройки пхп.
 

WMix

герр M:)ller
Партнер клуба
Мы всеже говорим про продакшин, мы думаем что перед тем как вывалить чтото на показ мы тестим сервера, и аппликацию. Я не беру ситуации когда люди делают ошибки, я говорю о ситуации когда мы не смогли предусмотреть чтонибудь, веренее не в силах были что либо предусмотреть. Лог ошибок поможет разобраться что "одмину" пора на перепрошивку. Но не в этом дело. Хорошо продуманный алгоритм при правильно настроенном окружении в принципе не ведет к ситуациии когда все рушится на столько, что мы не в силах вернуть нормальный ответ (перехватить ошибку, сгенерить исключение, обработать)
 

Фанат

oncle terrible
Команда форума
что мы не в силах вернуть нормальный ответ (перехватить ошибку, сгенерить исключение, обработать)
Ну вот об этом мы и говорим - о перехвате и выводе "нормального" ответа (насколько нормальной может быть стандартная страница 503 ошибки).
Просто ты, видимо, под фатальной ошибкой имеешь в виду кровь-кишки-расколбасило, а я и автор вопроса - аккуратную generic 503.
 

Фанат

oncle terrible
Команда форума
PHP:
echo $a->b();
я о таких думал
Понятно, то есть ты об ошибках разработки.
Их ,понятное дело, быть не должно.
Но в реальности они случаются. Как и всякие другие. Как упавший сервер БД, например.

То есть, понятно, что в продакшене ошибок разработки быть не должно.
Но для обработчика ошибок нам это неважно. Нам неважно, чем была ошибка выззвана - кривыми руками программиста или недостатком места на партиции с базой.
 

WMix

герр M:)ller
Партнер клуба
Это вызывает Fatal error. А то что сервером будет на любое падение возвращаться ответ с кодом 200 может от тебя и не зависить. Пьяный админ сменил настройки
 

Фанат

oncle terrible
Команда форума
Ок, я согласен, *таких* fatal error не должно быть.
Осталось решить, что делать со всеми остальными.
 

WMix

герр M:)ller
Партнер клуба
Ошибки парсинга, думаю и так понятно. Все остальное можно перехватить чтоб не получить фатальную
 

Фанат

oncle terrible
Команда форума
Ошибки парсинга, думаю и так понятно. Все остальное можно перехватить чтоб не получить фатальную
Смотри, ты понимаешь под fatal error кошмар на экране в стиле кровь-кишки-распиколбасило.
Все остальные здесь понимают под этим аккуратную отловленную ошибку.
Все согласны с тем что того, о чем ты говоришь, быть не должно.
У нас есть еще поводы для разнногласий?
 

fixxxer

К.О.
Партнер клуба
Fatal error может случиться по миллиону причин, никакими тестами нельзя покрыть все случаи (см. "проблема останова").

И даже php может отсегфолтиться, открываем changelog php и смотрим фиксы сегфолтов.

Нормальная обработка 50x от php на уровне вебсервера с отдачей статической заглушки нужна в любом случае.
 

WMix

герр M:)ller
Партнер клуба
Согласен, но все ошибки отлавливаются, фанатальную сложно обернуть. Она только в лог. А страничка ошибки о которой вы, она за пределами пхп.
 
Сверху