dagit at codersbase.com
Mon Nov 3 10:34:49 EST 2008
On Mon, Nov 3, 2008 at 6:24 AM, Simon Marlow <marlowsd at gmail.com> wrote:
> Jason Dagit wrote:
>> On Wed, Oct 8, 2008 at 1:19 AM, Simon Marlow <marlowsd at gmail.com> wrote:
>>> Johannes Waldmann wrote:
>>>> with 6.10, the following does not typecheck:
>>>> foo `Control.Exception.catch` \ _ -> return bar
>>>> Ambiguous type variable `e' in the constraint:
>>>> `Control.Exception.Exception e'
>>>> It is probably bad programming style anyway but what is the workaround?
>>> As long as you're aware that it is bad programming style. We
>>> didn't include an easy way to do this, because we want people to think
>>> why they need to catch *all* exceptions (most of the time it's a bug).
>> Since the above is bad form, what should I be doing? Could someone
>> please provide some examples or point me at the list of exceptions
>> that I can catch? What about catching multiple types of exceptions?
> Let's distinguish two kinds of exception handling:
Thanks. This helps a lot. Mind if I put it somewhere, such as on the wiki?
> As for the kinds of exception you can catch, nowadays you can catch any type
> that is an instance of Exception. A good place to start is the list of
> instances of Exception in the docs:
> although that only contains types defined by the base package.
> Others have commented on the backwards-compat issues, I don't have anything
> to add there.
Ah, but I had one more question that I don't think anyone has answered
yet. That is, how to deal with multiple types of exceptions.
Suppose, as a concrete example, that I was looking out for both
ExitCode and PatternMatchFail exceptions. Maybe I'm being naive, but
it seems like I'm in that situation again where I have to catch all
and then check if fromException succeeds on either PatternMatchFile or
ExitCode types. And then throw if it both give Nothing?
More information about the Glasgow-haskell-users