В Haskell нет средств для определения того, какие исключения времени выполнения может выдать функция.
Если вы пришли из Java с ее «проверенными» и «непроверенными» исключениями, то вы должны считать все исключения среды выполнения Haskell непроверенными. Эквивалент проверенных исключений в Haskell обычно включает их в тип результата, используя Maybe
, Either
, ExceptT
или что-то подобное, как указано в комментариях.
Существуют разные взгляды на правильное использование непроверенных исключений во время выполнения по сравнению с этими другими механизмами, и авторы библиотек будут принимать разные решения по обработке ошибок, так что вы как бы в своих силах.
В этом случае документация для wreq
очень ясно дает понять, что HttpException
и JSONError
могут быть выброшены, но нет никакой гарантии, что документация для этой или любой другой библиотеки является правильной / полной или что зависимые библиотеки не будет выбрасывать другие исключения, которые не перечислены. (Примечание: JSONError
фактически определено в wreq
. Пакет aeson
не использует исключения для сигнализации ошибок декодирования JSON.)
В рабочем коде вам нужно убедиться, что у вас есть соответствующий обработчик «все исключения».