qre*_*est 10 haskell exception-handling exception
foldl1 (+) []
Run Code Online (Sandbox Code Playgroud)
如何捕获结果错误?
Don*_*art 14
纯代码可能会抛出异步的,不精确的异常,例如,当部分函数遇到输入时,它无法处理.
这些是逻辑错误,通常表示程序规范中的错误.
它们可能通过异常处理程序被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 ()
Run Code Online (Sandbox Code Playgroud)
我们可以观察到异常被捕获,并且程序终止.
$ ./A
"This program as a bug: Prelude.foldl1: empty list"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2484 次 |
| 最近记录: |