note
tirwhan
<p>Caveat: I've never used [cpan://Exception::Class] in anger, so take my comment with a grain of salt.</p>
<p>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</p>
<c>
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
}
</c>
<p>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.</p>
<p><b>Update:</b> Heh, [adrianh] answered the question before my post made it. Oh well, take my post as a more extended example :-)</p>
<!-- Node text goes above. Div tags should contain sig only -->
<div class="pmsig"><div class="pmsig-237051">
<br><i>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.</i> -- Brian W. Kernighan
</div></div>
518228
518228