4、Haskell 异常处理与领域建模实战

Haskell 异常处理与领域建模实战

1. 异常处理

在运行时,程序出现错误是不可避免的。例如,在尝试写入文件时磁盘空间不足,或者打开 HTTP 连接却无法访问服务器。一般来说,任何 IO 操作在运行时都可能失败。在 Haskell 中,这些异常情况用 Exception 表示。Haskell 的异常是未检查的,即类型签名中不会显示可能抛出的异常,因此在阅读使用的包的文档时需要格外小心,因为文档通常会提及可能抛出的异常。

根据异常的抛出方式,异常可分为三种类型:
- 不纯异常(Impure exception) :在纯上下文中抛出的异常。例如:

isBelow10 :: Int -> Bool
isBelow10 n = if n < 10 then True else error "above 10!"

Haskell 是一种惰性编程语言,值在真正需要时才会被计算。这意味着在计算恰好是异常的值时,程序可能会在不可预测的位置崩溃。例如:

isBelow10 :: Int -> Either Text ()
isBelow10 n = if n < 10 then Right () else Left (error "above 10!")
let result = isBelow10 20
run :: IO ()
run =
  case result of
    Left e -> 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值