--- nfo/perl/libs/DesignPattern/Bridge.pm 2003/02/18 18:35:30 1.9 +++ nfo/perl/libs/DesignPattern/Bridge.pm 2003/02/21 08:38:21 1.11 @@ -1,7 +1,14 @@ ## -------------------------------------------------------------------------------- -## $Id: Bridge.pm,v 1.9 2003/02/18 18:35:30 joko Exp $ +## $Id: Bridge.pm,v 1.11 2003/02/21 08:38:21 joko Exp $ ## -------------------------------------------------------------------------------- ## $Log: Bridge.pm,v $ +## Revision 1.11 2003/02/21 08:38:21 joko +## + additional checks +## + raising exceptions +## +## Revision 1.10 2003/02/20 20:50:32 joko +## + small exception handling: now inheriting from little Exception object +## ## Revision 1.9 2003/02/18 18:35:30 joko ## + encapsulated/abstracted some more functionality: sub load_single ## @@ -40,7 +47,11 @@ use strict; use warnings; -use base qw( DesignPattern::Object ); +use base qw( + DesignPattern::Object + DesignPattern::Exception +); + use Data::Dumper; @@ -165,6 +176,9 @@ # this is the module testing phase - use mixin doesn't seem to propagate errors by default eval("use $package;"); + $self->checkExceptions(); + +=pod if ($@) { $meta->{loaded}->{$package} = 0; # include caller information @@ -177,6 +191,7 @@ print $msg, "\n"; } } +=cut #print "ref-1: ", ref $self, "\n"; #print "ref-2: ", ref $self::SUPER, "\n"; @@ -269,9 +284,21 @@ my $self = shift; my $includefile = shift; my $package = shift; - # TODO: do better error-detection here / prevent dies under all circumstances! - require $includefile; + + # pre-flight checks + if (!$includefile) { + $self->raiseException('Filename for inclusion was empty.'); + return; + } + + # go for it ... + eval("require '$includefile';"); + # ... and handle errors afterwards catching every message from perl itself ... + return if $self->checkExceptions(); + + # ... otherwise continue assuming everything is fine $self->mixinPackage($package) if $package; + } 1;