Haskell"zlib"库包装C库并且懒惰地解压缩.此库中的"解压缩"功能可以抛出只能在IO monad中捕获的异常.
类型是这样的:
decompress :: ByteString -> ByteString
Run Code Online (Sandbox Code Playgroud)
它使用以下内容:
foldDecompressStream L.Chunk L.Empty
(\_code msg -> error ("Codec.Compression.Zlib: " ++ msg))
Run Code Online (Sandbox Code Playgroud)
显然,数据流可能会被破坏,这将导致生成异常.
如果由于不同的原因我需要捕获多个异常,除了尝试匹配文本(具有各种负面因素)之外,我怎样才能告诉另一个例外?我需要聪明地恢复.