Size: a a a

2020 July 25

MK

Maxim Koltsov in Haskell
Я не про то
Чтобы войти в nix-shell и вызов кабал нью обновлял хпак
источник

MP

Misha Puzanov in Haskell
а как идиоматично решается такая задача:

Мне надо ловить все исключения которые может выкинуть http-client и всякая машинерия которая пишет в файлы (ну то есть все IOException, ConnectionTimeout и что там еще может вылететь), но при этом не ловить “управляющие исключения”, Timeout, AsyncException, и что там еще может произойти.

и (наверное) не ловить всякий ад, который там может в теории случиться, какой-нибудь Deadlock или ArithException, это по идее тоже должно выкидываться куда-то наверх

есть какие-нибудь библиотеки для такого?
типа там tryButDontCatchTypicalAsyncExceptions
источник

MP

Misha Puzanov in Haskell
или все руками пишут в catches длинным списком?
источник

MP

Misha Puzanov in Haskell
то бишь задача сводится к следующему: проще явно написать, какие исключения кидать дальше или проще явно написать какие ловить и обрабатывать. Тут наверное скорее вопрос к тем, у кого есть опыт длительного стреляния себе в ноги.
источник

MK

Maxim Koltsov in Haskell
Возьми пакет safe-exceptions, там есть приседания чтобы не ловить асинхронные исключения
источник

MK

Maxim Koltsov in Haskell
А зачем тебе вообще их ловить?
источник

MK

Maxim Koltsov in Haskell
https://www.tweag.io/blog/2020-04-16-exceptions-in-haskell/

Можно ещё почитать что тут пишут, не помню было ли там что-то релевантное вопросу
источник

MP

Misha Puzanov in Haskell
Maxim Koltsov
А зачем тебе вообще их ловить?
не, их я как раз не хочу ловить, я хочу чтобы async/cancel/timeout работали как положено
источник

MP

Misha Puzanov in Haskell
я хочу ловить всякие типа HttpExceptionRequest, IOException и прочее такое
источник

MK

Maxim Koltsov in Haskell
Я криво выразился
источник

MK

Maxim Koltsov in Haskell
Misha Puzanov
я хочу ловить всякие типа HttpExceptionRequest, IOException и прочее такое
Имею в виду зачем это ловить
источник

MP

Misha Puzanov in Haskell
Maxim Koltsov
Имею в виду зачем это ловить
ну это часть процесса, сказать,  типа репозиторий недоступен, выдать ошибку в красивый джсон и тп, а не орать и ломать мебель
источник

MP

Misha Puzanov in Haskell
в первом приближении, у меня есть
System.Timeout.timout 1000000 downloadURLToFile

при этом downloadURLToFile может выкидывать бог знает что, все эти ислюччения я хочу как-то причесать и показать в репорт ошибок, но при этом Timeout должен работать как положено
источник

MP

Misha Puzanov in Haskell
по диагонали посмотрел — вроде полезно, спасибо
источник

MK

Maxim Koltsov in Haskell
Safe-exceptions посмотри ещё
источник

MK

Maxim Koltsov in Haskell
Там в ридми много всего написано
источник

MP

Misha Puzanov in Haskell
ага, читаю как раз, люди те же самые проблемы и решают вроде
источник

MK

Maxim Koltsov in Haskell
Именно
источник

MK

Maxim Koltsov in Haskell
Я слышал что кому-то s-e не нравятся, но не помню почему
источник

MK

Maxim Koltsov in Haskell
Я не использую, потому что не ловлю исключения для ретраев
источник