मैं इस कोड का टुकड़ा लिखा एक फ़ाइल संकुचित हो सकती है कि पढ़ने के लिए:डिकंप्रेस 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' अब मान्य नहीं है ... Control.Exception.try' के बारे में क्या? http://hackage.haskell.org/packages/archive/base/latest/doc/html/Control-Exception.html#v:try –
बिंदु पर और अधिक, 'IO.try' विशेष रूप से शुद्ध कोड से अपवाद नहीं पकड़ता है , जबकि 'Control.Exception.try' करता है। – dave4420