Привет. Хелпаните советом, как можно предотвратить вызов callback в winzou

state machine, если во время смены статуса вылетает exception? через callback шлется емаил, но статус entity не менятся

21 ответов

11 просмотров

exception - исключительная ситуация, дальше которой программа не должна продолжать свою работу

Michel Angelo
exception - исключительная ситуация, дальше которо...

Почему не должна? Можно, например, повторить попытку.

Alexander
Почему не должна? Можно, например, повторить попыт...

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

Michel Angelo
Ну повторить попытку можно в том случае, если прог...

Думаю правильно будет сказать что есть 2 виза исключений: те которые мы ожидаем и потом программа отрабатывает с их учётом и те которые мы не ожидаем (или не хотим ожидать) после которых программа не имеет что выполнять

Alexandr _
Думаю правильно будет сказать что есть 2 виза искл...

ты cчитаешь правильно ожидать исключение? )) тогда это и не еxception вовсе

Michel Angelo
ты cчитаешь правильно ожидать исключение? )) тогда...

когда вы заходите на страницу к которой у вас нет доступа Symfony кинет вам AcceddDeniedException, который в далтнейшем будет обрабатываться хэгдлером, который либо сделает редирект либо выдаст вам страницу на которой сказано что вам туда нельзя. Вам же приложение не выкенет стэктрейс со словами "А всё, эксэпшон, я дальше работать не буду". Мало того, есть NotFoundHttpException, как и другие http исключения, который будет превращён в ответ клиенту. Всэ эти исключения ожидаемы и для них есть хэндлеры, остальные не исеют хэндлеров, потому их выводят как Unhandled exception

Alexandr _
когда вы заходите на страницу к которой у вас нет ...

когда страница кидает exception, на этом её дальнейшее выполнение прерывается, нет там никаких хендлеров, и даже если следовать вашему примеру Symfony Security и её AcceddDeniedException, метод контроллера не выполняется, контроллер не ходит в бд, не рендерит шаблон или json, Exception! Все, приплыли )), а тот стектрейс который мы видим в dev - это все что было до Exception

Michel Angelo
когда страница кидает exception, на этом её дальне...

то что метод контроллера не выполняет не означате что дальнейшее выполнение прерывается, выполнение идёт по другой ветке логикик и далеко не всегда прерывает выполнения кода. Если вы ловите исключение в сервисе через try catch у вас не отваливает процесс, вы просто выполняет другую ветку логики если она у вас есть. нет там никаких хендлеров - если говорить про access denied исключение - смотриет security.yaml, настройка security.filewalls.*.access_denied_handler, если говорить о исключениях http семейства - смотрите на \Symfony\Component\HttpKernel\Exception\HttpExceptionInterface - их общий интерфейс ------ \Symfony\Component\HttpKernel\Controller - контроллер которые отображает эти ошибки (это к слову о том что метод контроллера не выполняется - выполняется, но уже другой ) ---- \Symfony\Component\HttpKernel\EventListener\ErrorListener::onKernelException - метод который отрабатывает через события ядра когда исключения такого типа кидаются

Alexandr _
то что метод контроллера не выполняет не означате ...

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

Если у вас слейв база данных отвалилась вы будете возвращать булеан и закачивать реквест или просто переключитесь на другой слейв? У меня достаточно четкое понятие хэндлеров и оно точно не ограничено названием метода handle в классе.

Alexandr _
Если у вас слейв база данных отвалилась вы будете ...

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

Шурик
речь не идёт о том, чтоб не юзать исключения вовсе...

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

Alexandr _
Вот, весьма верно подмечено. По сути если у вас ес...

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

Alexandr _
Если у вас слейв база данных отвалилась вы будете ...

Сразу выкинул исключение, это ситуация исключительная и требует анализа, какого он упал? Память протекла? Пользователи положили запросами? Ок, потеряем мы n-пользователей, а что если мы всех их направим на другой?

Michel Angelo
Сразу выкинул исключение, это ситуация исключитель...

Когда у вас слейв отваливается вы переключаете свое приложение на другого слейва или на мастер попутно отправив срочное сообщение команде

Alexandr _
Когда у вас слейв отваливается вы переключаете сво...

и в итоге собственноручно мы кладём весь сервис )) и вместо n-пользователей мы теряем всех ))

Alexandr _
По причине чего?

по той же причине, по которой упал предыдущий, а причина нам не известна ))

Michel Angelo
по той же причине, по которой упал предыдущий, а п...

Насколько плохо надо написать приложение на симфонии в компоновке с мастер-слейв группой чтобы у вас поочередно падали все инстанции БД. Если это дос то есть rate-limit, есть fail2ban есть куча всего. Если это тяжёлые запросы то это вопрос оптимизации. Все это решаемые вопросы, но честно, за всё время своей работы ни разу не видел чтобы БД так легко падала, тем более в компоновках мастер слейв

Alexandr _
Насколько плохо надо написать приложение на симфон...

ну так это же не я накинул кейс, что слейв упал )) я лишь ответил на вопрос, что бы я сделал, если ... почем? потому что по этой же причине с вероятностью 99,9% упадут и другие

Michel Angelo
ну так это же не я накинул кейс, что слейв упал ))...

Я накинул этот кейс, потому что знаю что такие ОРМ как доктрина просто перейдут на другой слейв при такой ситуации. Что касается 99 процентов, единственное что может к такому привести это плохой код

Похожие вопросы

Обсуждают сегодня

Всем доброго вечера! Хочу поделиться своим злоключением с человеком, который, как оказалось сюда тоже скидывал свое резюме. Жаль, что я вашу группу не нашел раньше… человек ки...
Роман Ахмедзянов
4
Привет, кто может сделать юзербота с апи? Задачи: - создавать группы - создавать каналы - задавать для созданных каналов аватарку или эмоджи, имя группы - добавлять в группы...
Lencore
11
Всем привет, Добавил в плагин определение user agent public function registerMarkupTags() { return [ 'filters' => [ 'staticPage' => ['RainLab\Pages\Cl...
John Norton Kruger
3
А чего при переходе с 2 на 3 все что в билдере сделано тютю?
Денис Александрович
5
Я колись ставив гуглу антиспам 3.0, може і норм, але мені не дуже зайшло. Теж думав тиждень, що його і куди. Зупинився на трех варіантах відразу всі три і включив 1. Перевір...
𝓔𝓾𝓰𝓮𝓷𝓮𝓥 J
2
К слову, почему бы не использовать ссылки на папки, вместо инвайтинга?
Артем Уколов
3
Портфолио: Зовут меня Александр, мне 36 лет. Город Пушкино. Общий рабочий стаж: ~14 лет Уровень квалификации: Senior Full-stack developer Где прочесть мой код? https://github....
Magic
10
Всем привет, может кто знает нормальных иностранных хостинг провайдеров. Что бы по качеству аналогичные netangels, beget, timeweb?
Black Cat
4
Кастомные эмодзи для ботов доступны только элите, верно?
山 | Bobby | 山
3
где собака, админ группы? нычкуется и боится проявить волю, в толерантность еще не наигрался? @yelizariev
Ognezar
61
Карта сайта