在Haskell中處理錯(cuò)誤和異常通常使用Either
或Maybe
類(lèi)型來(lái)表示可能的錯(cuò)誤情況,并使用catch
函數(shù)來(lái)捕獲異常。
Either
類(lèi)型處理錯(cuò)誤:-- 定義一個(gè)可能返回錯(cuò)誤的函數(shù)
divide :: Int -> Int -> Either String Int
divide _ 0 = Left "Division by zero"
divide x y = Right (x `div` y)
-- 調(diào)用函數(shù)并處理錯(cuò)誤
case divide 10 2 of
Left err -> putStrLn err
Right result -> print result
Maybe
類(lèi)型處理錯(cuò)誤:-- 定義一個(gè)可能返回錯(cuò)誤的函數(shù)
divide :: Int -> Int -> Maybe Int
divide _ 0 = Nothing
divide x y = Just (x `div` y)
-- 調(diào)用函數(shù)并處理錯(cuò)誤
case divide 10 2 of
Nothing -> putStrLn "Division by zero"
Just result -> print result
catch
函數(shù)捕獲異常:import Control.Exception
-- 定義一個(gè)可能引發(fā)異常的函數(shù)
divide :: Int -> Int -> Int
divide x y = if y == 0 then error "Division by zero" else x `div` y
-- 使用catch函數(shù)捕獲異常
main = catch (print (divide 10 2))
(\e -> putStrLn $ "Error: " ++ show (e :: SomeException))
以上是在Haskell中處理錯(cuò)誤和異常的一些常見(jiàn)方法,開(kāi)發(fā)者可以根據(jù)具體情況選擇合適的方式來(lái)處理錯(cuò)誤和異常。