gpt4 book ai didi

haskell - 检查函数是否在 Haskell 中返回错误

转载 作者:行者123 更新时间:2023-12-05 09:13:11 25 4
gpt4 key购买 nike

我想创建一个函数,当函数抛出任何类型的异常时返回 True,否则返回 False

但是我还没有找到一种方法来使用 Control.Exception 中的 catch 方法。

我想捕获 [1,2] 抛出的错误!! 3 以及使用 error "Error msg" 引发的自定义错误。

最佳答案

您可以按如下方式使用catch:

example :: IO ()
example = do
let handler :: SomeException -> IO Bool
handler e = do
putStrLn "Exception caught:"
print e
return False
res <- (evaluate ([1,2::Int] !! 3) >> return True) `catch` handler
print res

最后一个print 将在正常终止时打印True,在异常终止时打印False

可以删除处理程序中的输出消息——它们仅用于说明。

如果您只想捕获其中的一些异常类型,您可以将 SomeException 替换为任何更具体的异常类型。

请注意,您无法在 IO 之外捕获异常,这使得它们更加受限。出于这个原因,应该避免像 !! 这样的部分函数,​​而更喜欢返回 Maybe a 类型的函数,它的输出可以在任何地方检查。

关于haskell - 检查函数是否在 Haskell 中返回错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56612123/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com