in reply to @ 2016-8 13:38 UTCA library to wrap the standard IO actions unexceptionally is something I've considered also.
There shouldn't be any other kinds of pseudo-exceptions that "should not be caught" since any other exception type is thrown on purpose. If you don't want to handle it at the call site, use ExceptT