Haskell“zlib”库包装C库并且懒惰地解压缩。此库中的“解压缩”功能可以抛出只能在IO monad中捕获的异常。
类型如下:
decompress :: ByteString -> ByteString
它使用以下内容:
foldDecompressStream L.Chunk L.Empty
(\_code msg -> error ("Codec.Compression.Zlib: " ++ msg))
显然,数据流可能会被破坏,这将导致生成异常。
如果我因为不同的原因需要捕获多个异常,除了尝试匹配文本(具有各种负面因素)之外,我怎样才能告诉另一个异常呢?我需要聪明地恢复。
答案 0 :(得分:2)
代码看起来的方式不能比匹配字符串做得更好。 你需要改变一些东西,也许你自己使用foldDecopressionStream?