
On Mon, Nov 3, 2008 at 9:34 AM, Jason Dagit
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?
I haven't tried this, so it may not work:
data MyException = MyArithException ArithException | MyIOException IOException deriving Typeable
instance Exception MyExcpetion where toException (MyArithException e) = toException e toException (MyIOExcpetion e) = toException e fromException se = case fromException se of Just e -> Just $ MyArithException e Nothing -> case fromException se of Just e -> Just $ MyIOException e _ -> Nothing <<<<< Then anyone can catch your exceptions by catching the ArithException or IOException as normal, and you can catch IOExceptions and ArithExceptions into your own custom type. -Antoine