Alex
Вот, а у меня не надо лезть к определению.
Alex
оно сразу там где юзается.
Дима
А зачем? Я лучше напишу функцию один раз
Alex
Потому что эти обработчики редко когда совпадают
Дима
В плане?
А если у тебя пришли не те данные, а ты от них с точкой что то вызываешь?
Alex
В смысле не те данные?
Alex
как у тебя могут прийти не те данные?
Дима
Вместо массива - число, а ты от него .map делаешь
Alex
Alex
Может у меня еще объект придет?
Alex
Я все таки когда чайню обработчики я учитываю какие данные могут прийти, верно? если они приходят другие значит у меня так и так программа должна сломаться и я должен это увидеть.
Дима
Так программа не должна ломаться же) Она может обрабатывать пограничные случаи, предоставляя разные варианты выхода из ситуации
Дима
А не fatal error
Alex
Не может программа не ломаться
Alex
У тебя всегда могут быть моменты которые ты не учел
Alex
и если программа вместо того чтобы выдать фатал станет unusable - будет хуже
Дима
Нет, она просто грамотно соберет данные для отладки и всё выведет в нужной форме
Alex
не знаю точного термина. Когда программа сглотнет те данные которые не должна была и обработает как если бы было все ок.
Alex
я сваливаюсь в FATAL ERROR потому что апишка не должна так отвечать ни в коем случае.
Alex
соотв пользователь видит "произошла ошибка, попробуйте позже".
Дима
А я спокойно собираю данные, для того, чтобы в ответ отправить важную для разработчиков инфу
Alex
Всегда есть варианты которые сложно учесть.
Alex
Alex
разработчики курят логи
Alex
в логах все эксепшены есть.
Дима
А какие логи, если у тебя программа упала?
Alex
ну, я на рельсах
Alex
оу, я про вебсайт говорил все это время ахах.
Alex
Извини.
Alex
Да, на фронте надо собирать данные для какого нибудь багснета.
Alex
Тем не менее представим что фронт сломался. Что ты покажешь пользователю? наверное в конкретном куске напишешь "извините произошла ошибка, попробуйте позже" верно?
Alex
по возможности оставив все остальное приложение работать.
Alex
Я сейчас в голове представляю react приложение если что.
Дима
Дима
Имея Maybe я не могу себе представить, как что-то вообще может идти "не так"
Alex
запросто. Что то может пойти не так. Не обработанная ситуация.
Alex
Допустим никто не обрабатывал момент что этот микросервис отвалился, вариантов тысячи.
Дима
До тех пор пока не пришел ответ у меня объект имеет значение Maybe Nothing()
Alex
Alex
ты ведь про фронт верно?
Дима
Ну не обязательно
Дима
На ноде это даже лучше работает
Alex
Ну если про бэк то я просто сваливаюсь в FATAL ERROR
Alex
потому что это действительно не обработанная ситуация
Alex
и я должен ее быстро увидеть.
Alex
просто на фронте и бэке подходы кардинально отличаются.
Дима
Ну я скорее про сам подход
Дима
Если я попытаюсь вызывать у объекта Either.Right(serverResponse) какой то ключ, а его там не будет, то у меня будет объект Left('handler123 recived wrong data'), который автоматически безопасно пройдет через любые обработчики и будет корректно документирован любым способом
Дима
Это монада Either, она работает таким образом, что даже Fatal Error — это правильно обработанная ситуация
Nikolay
Alex
Alex
Хорошо, у тебя неправильные данные
Alex
что ты делаешь дальше?
Дима
Дима
что ты делаешь дальше?
На выходе из потока обработки получаю значение, в котором хранится место и причина экспешна и любые другие необходимые для анализа данные, после чего их можно отправлять куда угодно как угодно, приложение то работает
Alex
Подожди
Alex
ты так и не ответил что ты показываешь пользователю при неправильных данных
Дима
Что угодно, это не неправильные данные — если ты юзаешь Either это уже означает, что у тебя есть сценарий для реакции на эту ошибку
Alex
Подожди
Alex
у тебя произошла ошибка
Alex
пользователю что показываешь?
Дима
Не ошибка. Функция просто не обработала результат должным образом, почему это будет ошибкой?
Пользователю покажу всплывающее окно со словами сервер упал
Alex
И чем это отличается от моего 500 Fatal error?
Дима
Это не принципиально вообще)
Alex
это тоже самое по сути
Alex
как раз таки это и принципиально, я этот момент пытался прояснить.
Alex
у меня точно также приложение сваливается в 500
Alex
А разница?
Alex
у меня эксепшн в контроллере произошел, или еще где глубже
Alex
при этом прилоежние то продолжает работать
Alex
Кто сказал что оно полностью падает?
Alexander 🐕
Мать моя женщина
Point-free в девапс чате, все в машину!
Дима
Alex
зачем все обрабатывать?
Alex
если у тебя есть какая то ошибка которую ты не учел, ты можешь ее исправить только постфактум.
Alex
Точно также у меня если вдруг внешняя апишка заработает - приложение будет нормально работать, а при отсутствии будет 500 отдавать.