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

rom*_*mul 5 haskell exception

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)

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

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

aug*_*tss 2

从代码的外观来看,没有什么比匹配字符串更好的了。你需要改变一些东西,也许自己使用foldDecopressionStream?