Size: a a a

2021 March 09

AD

Anastasiya Dyachenko in pro.elixir
Denis Fakhrtdinov
Есть альтернатива?
ну выше уже 2 варианта
источник

AD

Anastasiya Dyachenko in pro.elixir
Dmitry Russ (Aleksandrov)
Я к примеру, предпочитаю использовать структуры для ошибок - и сразу в ошибку вкладывать весь смысл, что пошло не так. Для кода, который должен вернуть ошибку пользователю.
звучит очень неплохо
источник

DR

Dmitry Russ (Aleksan... in pro.elixir
{:error, %SomeError{понятный контекст ошибки}}
источник

DF

Denis Fakhrtdinov in pro.elixir
Ну, положим, у меня делается два запроса, каждый из которых может вернуть {error, Reason}. Как мне определить какой запрос упал с 500?
источник

AD

Anastasiya Dyachenko in pro.elixir
Denis Fakhrtdinov
Ну, положим, у меня делается два запроса, каждый из которых может вернуть {error, Reason}. Как мне определить какой запрос упал с 500?
оборачивать запросы в функцию
источник

DR

Dmitry Russ (Aleksan... in pro.elixir
Dmitry Russ (Aleksandrov)
{:error, %SomeError{понятный контекст ошибки}}
И тогда по контектсу ошибки будет понятно, где оно произошло. Это вообще необходимо, если пользователю возвращать ошибки в понятном виде.
источник

AD

Anastasiya Dyachenko in pro.elixir
разделять уровни логики: выполнения запроса и бизнес логики - обработки ошибок
источник

LL

Lama Lover in pro.elixir
Denis Fakhrtdinov
Ну, положим, у меня делается два запроса, каждый из которых может вернуть {error, Reason}. Как мне определить какой запрос упал с 500?
Берёшь и делаешь функцию типа
@spec request_service1(args) :: {:ok, result()} | {:error, :service1_request_failed} (грубо говоря)

И такую для второго запроса в service2
источник

DF

Denis Fakhrtdinov in pro.elixir
Кек.
источник

DF

Denis Fakhrtdinov in pro.elixir
А если у меня сервисы динамически валятся, например?
источник

LL

Lama Lover in pro.elixir
Типа тут explicit > implicit
источник

DR

Dmitry Russ (Aleksan... in pro.elixir
Denis Fakhrtdinov
Ну, положим, у меня делается два запроса, каждый из которых может вернуть {error, Reason}. Как мне определить какой запрос упал с 500?
{:error, %SomeError{server: "github.com", error_code: ..}}
источник

AD

Anastasiya Dyachenko in pro.elixir
Denis Fakhrtdinov
А если у меня сервисы динамически валятся, например?
в теле с 500 же будет адрес куда запрос слался
источник

DR

Dmitry Russ (Aleksan... in pro.elixir
Если ошибка содержит самодостаточную информацию, то такой необходимости нет.
источник

DF

Denis Fakhrtdinov in pro.elixir
Ну то есть вы предлагаете для каждой функции которая дергается внутри with писать функцию-обертку.
источник

DF

Denis Fakhrtdinov in pro.elixir
А чем вам тапл не обертка?
источник

AD

Anastasiya Dyachenko in pro.elixir
Denis Fakhrtdinov
А чем вам тапл не обертка?
сложнее читать, смешивает разные слои логики. но это конечно вкусовщина
источник

LL

Lama Lover in pro.elixir
Denis Fakhrtdinov
А чем вам тапл не обертка?
1) Работает дольше
2) Затрудняет чтение кода
источник

DF

Denis Fakhrtdinov in pro.elixir
Работает дольше?..
источник

AD

Anastasiya Dyachenko in pro.elixir
Lama Lover
1) Работает дольше
2) Затрудняет чтение кода
ну про работает дольше это конечно такой себе аргумент
источник