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