Haskell惰性异常 - 区分多个异常?

时间:2011-03-25 23:54:25

标签: exception haskell

Haskell“zlib”库包装C库并且懒惰地解压缩。此库中的“解压缩”功能可以抛出只能在IO monad中捕获的异常。

类型如下:

decompress :: ByteString -> ByteString

它使用以下内容:

  foldDecompressStream L.Chunk L.Empty
    (\_code msg -> error ("Codec.Compression.Zlib: " ++ msg))

显然,数据流可能会被破坏,这将导致生成异常。

如果我因为不同的原因需要捕获多个异常,除了尝试匹配文本(具有各种负面因素)之外,我怎样才能告诉另一个异常呢?我需要聪明地恢复。

1 个答案:

答案 0 :(得分:2)

代码看起来的方式不能比匹配字符串做得更好。 你需要改变一些东西,也许你自己使用foldDecopressionStream?