foldl1 (+) []
我该如何捕获产生的错误?
纯代码可能会抛出异步的、不精确的异常,例如当部分函数遇到无法处理的输入时。
这些通常是逻辑错误,表明程序规范中存在错误。
它们可以通过异常处理程序在 IO 代码(通常在程序的外层)中捕获。
例如,要捕获空列表的缺失情况:
{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE BangPatterns #-}
import Control.Exception
main = do
handle (\(e :: SomeException) -> print $ "This program as a bug: " ++ show e) $ do
let !v = foldl1 (+) ([] :: [Int])
return ()
$ ./A
"This program as a bug: Prelude.foldl1: empty list"