
Alex
19.09.2018
07:46:33
у тебя ситуация которую ты не предусмотрел

Nikita
19.09.2018
07:46:35
нет пускай все работает с ошибками

Tim
19.09.2018
07:46:40
суть класса в том, что он должен выполнить задачу свою. он её либо выполняет, либо нет

Alex
19.09.2018
07:46:51
если он ее не выполнил - мы хотим знать почему

Google

Tim
19.09.2018
07:46:51
если при выполнении задачи он всю аппликуху к хуям роняет
это говнокласс

Alex
19.09.2018
07:47:00
запрос а не апликуху
роняет намеренно

Nikita
19.09.2018
07:47:04
как ты тестировал тогда?

Tim
19.09.2018
07:47:08

Alex
19.09.2018
07:47:16
современные системы сложные

Nikita
19.09.2018
07:47:24
тогда тебе нужно промеж рогов дать, что ты так тесты написал, и твоим QA

Tim
19.09.2018
07:47:26
скажите пожалуйста четко, что вам именно не нравится?

Alex
19.09.2018
07:47:31
че угодно может вальнуться в определенной конфигурации

Tim
19.09.2018
07:47:37

Google

Tim
19.09.2018
07:48:00
так, мне кажется вы меня недопоняли
когда ты в rescue блоке рейзишь эксепшен
то у инстанса эксепшена есть в #cause
эксепшен, в результате которого он был вызван
ещё раз, что вам не нравится?

Alex
19.09.2018
07:49:07

Tim
19.09.2018
07:49:18

Alex
19.09.2018
07:49:22
ну есть он там
а по факту кто его инспектить будет? никто

kolas
19.09.2018
07:49:55
зачем дальше рейзить если можно вернуть ошибку, как в го ?

Alex
19.09.2018
07:49:59
два варианта - либо пишешь дефенсиный сервис который ошибку ложит куда то, но наверх не пробрасывает а возвращает пустой результат, либо валит все на уровне http запроса
можно еще ошибки-монады сделать да

Tim
19.09.2018
07:50:21
вопрос, а зачем его инспектить? ты сам спрашиваешь, как узнать. я говорю, вот так.
тебе не надо знать в запросе из-за чего конкретно у тебя свалился сервис. тебе надо лишь знать, что он свалился

Alex
19.09.2018
07:50:31
На самом деле, мне вот интересно стало, почему люди так не хотят использовать result объект и делают все, что бы юзать что угодно, но не его

Tim
19.09.2018
07:50:33
потому что если у тебя весь запрос валится после вызова сервиса
то я повторяюсь
это говно сервис

Alex
19.09.2018
07:50:48

Tim
19.09.2018
07:51:10

Alex
19.09.2018
07:51:10

Google

Tim
19.09.2018
07:51:20

Alex
19.09.2018
07:51:33
если нас такое не устраивает по каким то причинам, то он должен сходить в хранилище ошибок и записать ее туда, вернув пустой результат консумеру
из кишок
из хишок. Потому что если он вальнулся то это непредвиденная ситуация
для которой сюрприз сюрприз, exception и нужен

Tim
19.09.2018
07:52:08

Alex
19.09.2018
07:52:15
и ты либо в фоне эту ошибку куда то сохраняешь, либо явно

Tim
19.09.2018
07:52:38

Alex
19.09.2018
07:52:47
для control flow?

Tim
19.09.2018
07:52:52
ошибка сети – это предвиденная ситуация, но при этом заслуживающая эксепшена
эксепшен это когда что-то, что ты хотел сделать, не было сделано

Alex
19.09.2018
07:53:12
для этого есть retry паттерн
в оптимальном маршруте эксепшенов нету.

Tim
19.09.2018
07:54:00

Alex
19.09.2018
07:54:03
а непредвиденные эксепшены мы тем более хотим знать
потому что они непредвиденные

Tim
19.09.2018
07:54:17

Alex
19.09.2018
07:54:20
ошибка сети должна быть обернута в retry со стратегией

Google

Tim
19.09.2018
07:54:23
в чем проблема, я не пойму
ты споришь ради спора?

Alex
19.09.2018
07:54:34

Tim
19.09.2018
07:54:50

Alex
19.09.2018
07:54:57
а се.
Ты меня походу не понял

Tim
19.09.2018
07:55:11
я ведь даже тут ещё в сообщениях писал, непредвиденные ошибки я отправляю в ньюрелик

Alex
19.09.2018
07:55:14
ты пошел по второй стратегии где ты фоново сохраняешь ошибку

Tim
19.09.2018
07:55:25
когда вы научитесь читать что другие люди пишут?

Admin
ERROR: S client not available

Alex
19.09.2018
07:55:40
из чего я делаю вывод что мы в сообщения друг друга вообще не вдумывались

Tim
19.09.2018
07:56:02
и насчёт твоего предложения возвращать ничего если не получилось, а в инстансах сохранять ошибку, я тебе говорю

Alex
19.09.2018
07:56:17

Tim
19.09.2018
07:56:22
мой путь это тоже самое, только эта ошибка сохраняется прям в эксепшене

Alex
19.09.2018
07:56:27
не надо control flow на эксепшенах

Anton
19.09.2018
07:56:28

Tim
19.09.2018
07:57:43
смотри. ты говоришь сети, скачай лошадей с хуями. она скачивает – ок, ты как-то обрабатываешь. она не скачивает – получается эксепшен и ты его обрабатываешь

Anton
19.09.2018
07:58:01
Так же как и когда база падает

Google

Alex
19.09.2018
07:58:12

Tim
19.09.2018
07:58:21

Alex
19.09.2018
07:58:34

Tim
19.09.2018
07:58:34

Alex
19.09.2018
07:58:36
то что?

Tim
19.09.2018
07:58:50

Alex
19.09.2018
07:58:52
если ты эксепшен сохранил куда то
то просто возвращаешь статус что не можешь вернуть результат

Tim
19.09.2018
07:59:09

Alex
19.09.2018
07:59:11
зачем на эксепшенах флоу строить?
я каждый вызов сервиса должен в rescue оборачивать
вместо получения result объекта

Tim
19.09.2018
07:59:59
и у тебя будет тонна ификов по типу: хмм, мне вот это должно было вернуть лошадей с хуями, а давай-ка проверим, это лошади с хуями или что-то другое? или ошибка сети?

Alex
19.09.2018
08:00:52
алсо такие проблемы решают монады

Tim
19.09.2018
08:01:06
у меня я точно уверен что моя штука вернёт лошадей с хуями и не надо ничего сто раз проверять

Alex
19.09.2018
08:01:09
их можно даже зачейнить

Tim
19.09.2018
08:01:11
не вернула? пошел по другому пути

Dmitriy
19.09.2018
08:01:46
тот же рейлвей можно сделать через result.success? - так же всего один иф будет