За последние 24 часа нас посетили 22795 программистов и 1253 робота. Сейчас ищут 715 программистов ...

Как организовать кучу исключений (родословная / коды ошибок)

Тема в разделе "PHP для профи", создана пользователем AndryG, 6 апр 2018.

Метки:
  1. AndryG

    AndryG Новичок

    С нами с:
    23 ноя 2017
    Сообщения:
    5
    Симпатии:
    2
    Довольно большой проект с кучей модулей, разделов и прочего.
    Поделистесь, пжлст, опытом как вы организовуете исключения в немаленьких проектах?

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

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


    Строить широкую сеть с наследниками или использовать один класс и опереться на коды ошибок? По каким соображениям делать новый класс, когда новый код?

    Для этого всего нужна стройная система исключений и их обработчиков. Опыта в их построении нет. помогите минимизировать шишки, пжлст.
     
  2. Васяня

    Васяня Активный пользователь

    С нами с:
    2 окт 2016
    Сообщения:
    238
    Симпатии:
    32
    Адрес:
    Россия, Приморский край, г. Находка.
    try catch над всем кодом и все сообщения на почту, лучше начальству :D
     
  3. nospiou

    nospiou Старожил

    С нами с:
    4 фев 2018
    Сообщения:
    3.400
    Симпатии:
    510
    вот так приблизительно все и делают https://laravel.com/docs/5.6/validation
    пишешь отдельный класс обычным if обрабатываешь и возвращаешь куда нужно
    try catch немного для другого.
     
  4. Васяня

    Васяня Активный пользователь

    С нами с:
    2 окт 2016
    Сообщения:
    238
    Симпатии:
    32
    Адрес:
    Россия, Приморский край, г. Находка.
    Да что ты! Валидотор от ларавел бросает ексепшен в случае ошибок, ларавел его отлавливает и мутит свою магию с переменной $errors в шаблонах. try catch в любом месте, в лубой ситуации пригодится :cool:
    --- Добавлено ---
    Шучу try catch, вообще не надо использовать :D
    --- Добавлено ---
    https://php.ru/manual/function.set-error-handler.html