Haskell怎么處理錯(cuò)誤和異常

小億
93
2024-04-16 15:52:11

在Haskell中處理錯(cuò)誤和異常通常使用EitherMaybe類(lèi)型來(lái)表示可能的錯(cuò)誤情況,并使用catch函數(shù)來(lái)捕獲異常。

  1. 使用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
  1. 使用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
  1. 使用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ò)誤和異常。

0