heh, the well known problem, i've seen it in Delphi. it even has a large
list of exceptions to be ignored, but i think that better way will be
to set this on a per-package and per-module basis

Yes, that might be a better idea. In general though, it sounds as if -fbreak-on-error will be useful more often than -fbreak-on-exception. I was not aware of the former, and I had the latter in my .ghci. I think I'll remove it from there and just use the OPTIONS pragma when needed.
 
> Perhaps I don't quite get how this works, but when I :set
> -fbreak-on-exception in GHCi, I get an exception using readFile. It
> reads the entire file and then throws what appears to be an EOF exception.

 Prelude>> readFile "blah.txt"
> "blah\nblah\nblah\nStopped at <exception thrown>
> _exception ::
>   e = GHC.Exception.SomeException (GHC.Exception.:DException _
>                                                              (GHC.Show.:DShow ...) ....)
>                                    (GHC.IOBase.IOError Nothing GHC.IOBase.EOF ....)


> When I :set -fno-break-on-exception, I see no exception.

> I thought that lazy IO reads until it reaches the EOF, then closes
> the file. This happens with both 6.10.1 and 6.8.3, so perhaps this
> is standard stuff, and I'm missing something.

Regards,
Sean