Мне нужна помощь, чтобы понять использование трех функций Haskell
- попробуйте (
Control.Exception.try :: Exception e => IO a -> IO (Either e a)
) - catch (
Control.Exception.catch :: Exception e => IO a -> (e -> IO a) -> IO a
) - handle (
Control.Exception.handle :: Exception e => (e -> IO a) -> IO a -> IO a
)
Мне нужно знать несколько вещей:
- Когда я использую эту функцию?
- Как использовать эту функцию с помощью простого примера?
- Где разница между catch и handle? У них почти одинаковая подпись только с другим порядком.
Я попытаюсь записать свои испытания и надеюсь, что вы можете мне помочь:
попробовать
У меня есть пример вроде:
x = 5 `div` 0
test = try (print x) :: IO (Either SomeException ())
У меня есть два вопроса:
-
Как настроить пользовательский вывод ошибки?
-
Что я могу сделать, чтобы установить все ошибки в SomeException, поэтому я не должен писать
:: IO (Either SomeException())
улов/попробуйте
Можете ли вы показать мне короткий пример с выводом пользовательской ошибки?