在Haskell中捕获任意异常,可以使用try
和catch
函数。try
函数允许您执行一个操作,并返回一个Either
类型的结果,其中Left
表示操作失败并返回异常,Right
表示操作成功并返回结果。catch
函数允许您处理try
返回的Left
结果,并执行相应的操作。
以下是一个简单的示例,演示如何在Haskell中捕获任意异常:
import Control.Exception (try, catch)
main :: IO ()
main = do
result <- try (readFile "non-existent-file.txt")
case result of
Left ex -> putStrLn $ "Error: " ++ show ex
Right content -> putStrLn $ "File content: " ++ content
在这个示例中,我们尝试读取一个不存在的文件,这将导致异常。try
函数捕获该异常,并将其作为Left
结果返回。我们使用case
语句来处理结果,如果操作失败,则打印异常信息,否则打印文件内容。
如果您希望在捕获异常后执行特定的操作,可以使用catch
函数。例如:
import Control.Exception (try, catch)
main :: IO ()
main = do
result <- try (readFile "non-existent-file.txt")
case result of
Left ex -> putStrLn $ "Error: " ++ show ex
Right content -> putStrLn $ "File content: " ++ content
handleError :: IOException -> IO ()
handleError ex = putStrLn $ "Error: " ++ show ex
main' :: IO ()
main' = do
catch (readFile "non-existent-file.txt") handleError
在这个示例中,我们使用catch
函数来处理try
返回的Left
结果。catch
函数接受两个参数:要执行的操作和异常处理函数。如果操作失败,异常处理函数将被调用,并传递异常作为参数。在这个示例中,我们定义了一个handleError
函数,它接受一个IOException
类型的参数,并打印异常信息。
总之,在Haskell中捕获任意异常,可以使用try
和catch
函数。try
函数允许您执行一个操作,并返回一个Either
类型的结果,其中Left
表示操作失败并返回异常,Right
表示操作成功并返回结果。catch
函数允许您处理try
返回的Left
结果,并执行相应的操作。
领取专属 10元无门槛券
手把手带您无忧上云