<div dir="ltr">In the documentation for <a href="http://hackage.haskell.org/package/base-4.8.1.0/docs/System-IO.html">System.IO</a>, we find the following assertion:<div><br></div><blockquote style="margin: 0 0 0 40px; border: none; padding: 0px;"><div><span style="color: rgb(0, 0, 0); font-family: sans-serif; line-height: 14.56px;">Any I/O errors encountered while a handle is semi-closed are simply discarded.</span></div></blockquote><div><div><br></div><div>also this other one:</div><div><br></div></div><blockquote style="margin: 0 0 0 40px; border: none; padding: 0px;"><div><div>Encoding and decoding errors are always detected and reported, except during lazy I/O (hGetContents, getContents, and readFile), where a decoding error merely results in termination of the character stream, as with other I/O errors.</div></div></blockquote><div><div><br></div></div><div>Is this really correct, though? This <a href="http://stackoverflow.com/questions/16257037/detecting-i-o-exceptions-in-a-lazy-string-from-hgetcontents">SO question</a> says that exceptions found during lazy I/O are thrown from pure code, and a <a href="http://stackoverflow.com/a/33985047/1364288">small experiment</a> seems to confirm it. I personally prefer that behaviour, by the way. </div><div><br></div><div>Perhaps the documentation should be updated?</div></div>