Haskell ленивые исключения - различать множественные исключения? - PullRequest
5 голосов
/ 26 марта 2011

Библиотека Haskell "zlib" оборачивает библиотеку C и лениво распаковывает. Функция «распаковки» в этой библиотеке может генерировать исключения, которые можно перехватить только в монаде ввода-вывода.

Тип такой:

decompress :: ByteString -> ByteString

Используется следующее:

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

Очевидно, что поток данных может быть поврежден, что приведет к генерации исключения.

Если мне нужно перехватить несколько исключений из-за разных причин, как я могу отличить одно исключение от другого, кроме как пытаться сопоставить текст (в котором есть все виды негативов)? Мне нужно восстановить разумно.

1 Ответ

2 голосов
/ 26 марта 2011

То, как выглядит код, вы не можете сделать лучше, чем сопоставить строку.Вам нужно что-то изменить, возможно, вы сами используете foldDecopressionStream?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...