[Haskell-cafe] IO and exceptions

Michael Orlitzky michael at orlitzky.com
Sun Nov 9 13:38:02 UTC 2014


On 11/09/2014 08:11 AM, Roman Cheplyaka wrote:
> Let's say you knew what exceptions could be thrown. What would you do
> differently then?
> 
> Typically, if it's a command-line app and something unexpected happens,
> you simply present the error to the user. That's what exceptions do
> already without any effort from you.
> 

The output from the exception is usually useless, though. Rather than,

  *** Exception: EACCES

(or something similar, whatever, I'm making it up), I want to show:

  Insufficient permissions for accessing /run/<app>. This can be fixed
  by granting write and execute access on that directory to the user
  under which the application is running.

If the operation can fail in different ways -- like if the directory is
missing entirely -- I need to pattern match on the exception and display
something else.

Another example: I don't want to log a "read error" in my daemon, which
is what I'll get if I log the exception. I want to know *what* failed to
be read. Was it a file (that a cron job deleted) or a network socket
(whose connection was dropped)? I need to catch those in the code, where
I know what's being read, and what the "read error" means in context.



More information about the Haskell-Cafe mailing list