in reply to Creating exception classes
use strict; use warnings; use 5.012; use Exception::Class ( 'MyException', 'CommandException' => { isa => 'MyException' }, 'TimeoutException' => { isa => 'CommandException', description => 'This exception resulted from running the metrics commands' }, 'DBException' => { isa => 'MyException', description => 'DB returned error' } ); &ThrowMyException(); sub ThrowMyException() { eval{ TimeoutException->throw(error=>"This is error due to timeout +") }; my $err; if ($err = Exception::Class->caught('TimeoutException') ) { #print Dumper($err); #print "err is of type ".ref($err); die $err->description . ": " . $err->error; } elsif ( $err = Exception::Class->caught("MetricsException") ) { #print Dumper($err); die $err->error; } }
If you see class names like A::B::C, that means the class is named C and it can be found in the directory A/B/. The A::B:: part is a namespace name to prevent name conflicts, but it also indicates the directory structure where the class is located. When you write A::B::C in your program, perl searches all the directories in @INC for a directory named A that has a subdirectory named B, which contains a file called C.pm.
|
---|
Replies are listed 'Best First'. | |
---|---|
Re^2: Creating exception classes
by tobyink (Canon) on Feb 05, 2013 at 10:08 UTC |
In Section
Seekers of Perl Wisdom