나는 압축 할 수있는 파일을 읽기 위해이 코드를 썼다 : 그것은 잘 컴파일압축 해제 IOError를 잡는 방법은 무엇입니까?
import Codec.Compression.GZip
import IO -- using IO.try
read file = do
let f = L.readFile file
let c = fmap decompress $ f
unzipped <- try c
case unzipped of
Right b -> return b
Left _ -> f
을하지만,이 압축 파일을 처리 할 수있는 유효한 방법이없는 것 같다. 압축 파일에 코드를 실행하면 좋은 작동하지만 압축되지 않은 파일은 예외와 함께 실패합니다이를 가능하게하는 방법에 대한
*** Exception: Codec.Compression.Zlib: incorrect header check
어떤 생각을?
는'IO.try'가되지 않습니다 (난 당신이 Data.ByteString.Lazy이 L. 자격을 가져온 가정) ... Control.Exception.That'은 어떨까요? http://hackage.haskell.org/packages/archive/base/latest/doc/html/Control-Exception.html#v:try –
요즘까지 'IO.try'는 특히 순수 코드에서 예외를 catch하지 않습니다. , 반면에'Control.Exception.try'는 않습니다. – dave4420