Комментарии 6
Где же railway?
«Railway-oriented programming» — функциональный стиль обработки ошибок через ADT (Either/Result).
Есть готовые библиотеки:
raphael-dms/monad,
functional-php/functional,
sergphp/fp-psrl.
Раз уж вы на PHP
Ваша LLM-ка к концу генерации забыла, о чем она говорила в начале.
Ошибки могут возникать на любом уровне, но очень важно правильно их перехватывать, трансформировать и логировать.
и
Не ловите все исключения подряд; обрабатывайте только ожидаемые.
— противоречат друг другу.
Но самое главное, что исключения прибиты гвоздями к тому потоку, который обрабатывает данный кусок кода, и когда вы надумаете распараллелить его на несколько машин (да хотя бы на несколько потоков) — всё написанное выше, кроме either-монад, станет бессмысленным. А у нас тут 2025 на дворе, странно ориентироваться на один поток выполнения.
ИИ такой бред не сгенерирует) Если бы тут поработал ИИ, у статьи был бы план, выводы и хоть какая-то структура)))
То что `Ошибки могут возникать на любом уровне` - это про стратегию обработки ошибок и патерн которым я пользуюсь описан на начале статти,
а то что `Не ловите все исключения подряд` - это про тактику обработки этих ошибок - имелось ввиду не использовать слепой catch (Throwable $e) а ловить ошибки только те что ожидаешь. FF - лучше раньше упасть и увидеть эту ошибку.
Согласен. Сттаття больше ориентирована на однопоточную обработку. И советы в ней остаются актуальными для синхронной и асинхронной обработки. Что касаеться PHP то в нем нет настоящей параллельной обработки "из коробки"; Что касается других языков - там нужны другие подходы которые уже выходят за границы этой стати.
Ну есть же всякие https://github.com/krakjoe/parallel и типа того.
Но всё равно, вы, наверное, правы, и в PHP это не так востребовано, а у меня просто проф. деформация.
Обработка ошибок и их стратегии