package perfSONAR_PS::Error_compat; =head1 NAME perfSONAR_PS::Error_compat - A module that provides a transition between a full on exceptions framework for perfSONAR PS and having each service specify explicitly the eventType and description. =head1 DESCRIPTION This module provides a simple method for throwing exceptions that look similar to how eventType/description messages used to be propogated. =head1 SYNOPSIS # if an error occurs, perfSONAR_PS objects should throw an error eg sub openDB { my $handle = undef; $handle = DBI->connect( ... ) or throw perfSONAR_PS::Error_compat( "error.common.storage", "Could not connect to database: " . $DBI::errstr . "\n" ); return $handle; } ### script.pl ### # in the calling code my $dbh = undef; try { $dbh = &openDB(); } catch perfSONAR_PS::Error_compat with { # print the contents of the error object (the string) print "An error occur: ".$@->eventType."/".$@->errorMessage."\n"; } otherwise { # some other error occured! print "Some unknown error occurred! $@\n"; } finally { print "Done!\n"' }; # don't forget the trailing ';' =cut use strict; use warnings; our $VERSION = 0.08; use base 'Error'; my $debug = 0; sub new { my $self = shift; my $eventType = shift; my $text = shift; my @args = (); if ($debug) { local $Error::Debug = 1; } local $Error::Depth = $Error::Depth + 1; my $obj = $self->SUPER::new(-text => $text, @args); $obj->{EVENT_TYPE} = $eventType; return $obj; } sub eventType { my $self = shift; return $self->{EVENT_TYPE}; } sub errorMessage { my $self = shift; return $self->text(); } 1; =head1 SEE ALSO L, L, L, L, L, L, L To join the 'perfSONAR-PS' mailing list, please visit: https://mail.internet2.edu/wws/info/i2-perfsonar The perfSONAR-PS subversion repository is located at: https://svn.internet2.edu/svn/perfSONAR-PS Questions and comments can be directed to the author, or the mailing list. =head1 VERSION $Id:$ =head1 AUTHOR Aaron Brown, aaron@internet2.edu =head1 LICENSE You should have received a copy of the Internet2 Intellectual Property Framework along with this software. If not, see =head1 COPYRIGHT Copyright (c) 2004-2008, Internet2 and the University of Delaware All rights reserved. =cut # vim: expandtab shiftwidth=4 tabstop=4