NAME
Net::Z3950::DBIServer::Exception - exception thrown by DBIServer module
SYNOPSIS
# Somewhere in a function deep in the call tree
die new Net::Z3950::DBIServer::Exception($bib1ErrorCode, $addInfo);
# And higher up the call tree we invoke and check like this:
eval {
functionWhichMightThrowAnException();
}; if ($@ && $@->isa('Net::Z3950::DBIServer::Exception')) {
warn "Bib-1 error: " . $@->code() . ", " . $@->addinfo();
} elsif ($@) {
die $@;
}
DESCRIPTION
A tiny class which merely encapsulates a BIB1 diagnostic so that it can be generated by low-level functions and picked up at a higher level. Exists only to be thrown (oh, alright then, die()
d :-)
Note that code which catches exceptions thrown in this way needs to be careful that it only catches the right kinds of objects, as the code above does. This is essential as Perl itself will call die()
- with a string argument - when certain ``real errors'' occur, such as trying to call a function which has not been defined.
METHODS
new()
new Net::Z3950::DBIServer::Exception($bib1ErrorCode, $addInfo);
Creates and returns a new Exception object with the specified Bib-1 error code and associated additional information. The only thing you can do with the object thereafter is retrieve the error code and additional information with which it was created. It is intended to be used as the argument to die()
, which is Perl's, shall we say, idiosyncratic exception-throwing primitive.
throw()
Net::Z3950::DBIServer::Exception::throw($bib1ErrorCode, $addInfo);
This convenience method is exactly equivalent to
die new Net::Z3950::DBIServer::Exception($bib1ErrorCode, $addInfo);
but one character shorter!
code()
$bib1ErrorCode = $exception->code();
Returns the Bib-1 error code with which the exception was created.
addinfo()
$addInfo = $exception->addinfo();
Returns the additional information with which the exception was created.
AUTHOR
Mike Taylor <mike@miketaylor.org.uk>
First version Saturday 23rd February 2002.
SEE ALSO
Net::Z3950::DBIServer
and Net::Z3950::DBIServer::ResultSet
are the modules that use this.
The numeric codes, their interpretations, and the form of additional information that should accompany them are described in Appendix ERR.1 of the Z39.50-1995 standard document at http://lcweb.loc.gov/z3950/agency/defns/bib1diag.html
Isn't it great that the standard is freely available on the web? Hang your heads in shame, ISO!