Beefy Boxes and Bandwidth Generously Provided by pair Networks
Think about Loose Coupling

Re: Exception Classes Advice on Subclasses

by tirwhan (Abbot)
on Dec 21, 2005 at 10:28 UTC ( #518272=note: print w/replies, xml ) Need Help??

in reply to Exception Classes Advice on Subclasses

Caveat: I've never used Exception::Class in anger, so take my comment with a grain of salt.

I think the main point of using different subclasses is that you can check for the subclass directly when 'catch'ing the exception, and handle it appropriately to the type of error encountered. For example

use Exception::Class ( 'X::FatalIOError' => { # fields etc. }, 'X::TimeOut' => { } ); eval { somecode() }; if ( X::FatalIOError->caught()) { # do something and die } elsif (X::TimeOut->caught() ) { # wait and retry } elsif (Exception::Class->caught() ) { # got an exception we weren't expecting # die horribly or something }

Sure, you could set up something similar with using a single MyException subclass and testing the contents, but it seems a lot cleaner this way.

Update: Heh, adrianh answered the question before my post made it. Oh well, take my post as a more extended example :-)

Debugging is twice as hard as writing the code in the first place. Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it. -- Brian W. Kernighan

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://518272]
and all is quiet...

How do I use this? | Other CB clients
Other Users?
Others taking refuge in the Monastery: (5)
As of 2017-01-20 02:56 GMT
Find Nodes?
    Voting Booth?
    Do you watch meteor showers?

    Results (173 votes). Check out past polls.