|4||6||The main annoyance is that if you want to throw anything except a String or an IOError (or maybe one or two other types), you have to use throwDyn, catchDyn, etc. Annoying, and can be complicated for newbies. Both Python and Java leverage OOP so that exceptions are classes and can be subclassed for greater precision. Java even enforces this to a greater degree. I don't know how possible this is in Haskell, but it is a great feature as far as I'm concerned. It would also be helpful to force all exceptions to provide a Show instance, so that generic handlers would be more easily possible.