Error::Helper Synopsis

This module allows one to use it as a base for adding various error handling methods to their module. Error checking can be done in two methods, either calling one of error checking functions and seeing if it is present or setting that error code/flag to be fatal and collecting failures via eval and then when processing $@, then check the error code/flag.

There are five required variables in the blessed hash object.

The following are optional.

Below is a example script showing it all being used.

#!/usr/bin/env perl
use warnings;
use strict;

{
	package Foo;
	use base 'Error::Helper';

	sub new {
		my $arg = $_[1];

		my $self = {
			perror        => undef,
			error         => undef,
			errorLine     => undef,
			errorFilename => undef,
			errorString   => "",
			errorExtra    => {
				all_errors_fatal => 0,
				flags            => {
					1 => 'UndefArg',
					2 => 'test',
					3 => 'derp',
				},
				fatal_flags => {
					derp => 1,
				},
				perror_not_fatal => 0,
			},
		};
		bless $self;

		#error if $arg is set to "test"
		if ( defined($arg)
			&& $arg eq "test" )
		{
			$self->{perror}      = 1;
			$self->{error}       = 2;
			$self->{errorString} = 'A value of "test" has been set';
			$self->warn;
			return $self;
		}

		return $self;
	} ## end sub new

	sub foo {
		my $self = $_[0];
		my $a    = $_[1];

		if ( !$self->errorblank ) {
			return undef;
		}

		if ( !defined($a) ) {
			$self->{error}       = 1;
			$self->{errorString} = 'No value specified';
			$self->warn;
			return undef;
		}

		if ( $a eq 'derp' ) {
			$self->{error}       = 3;
			$self->{errorString} = 'foo was called with a value of derp';
			$self->warn;
		}

		return 1;
	} ## end sub foo
}

my $foo_obj = Foo->new( $ARGV[0] );
if ( $foo_obj->error ) {
	warn( 'error:' . $foo_obj->error . ': ' . $foo_obj->errorString );
	exit $foo_obj->error;
}

eval { $foo_obj->foo( $ARGV[1] ); };
if ($@) {
	# do something...
	warn( '$foo_obj->foo( $ARGV[1] ) errored.... ' . $@ );
	if ( $foo_obj->errorFlag eq 'derp' ) {
		warn('error flag derp found... calling again with a value of default');
		$foo_obj->foo('default');
	}
} elsif ( $foo_obj->error ) {
	# do something...
	$foo_obj->warnString('non-fatal error when calling foo');
}