http://www.perlmonks.org?node_id=1026697


in reply to Re: Catching errors.
in thread Catching errors.

I am trying to catch the errors within the perl application using a number of standard routines like this one:

$sth=$dbh->prepare($sql_string) or die_db(...) sub die_db{ # # Send emails. # my $message=shift; my $line_number=shift; print STDOUT $line_number, "\n", $message; my $from = hostname().'@i-mageonline.com'; my $msg = "There has been an error at line $line_number. \nThe err +or message is '$message'. "; my $sender = send_email("DB Error at line $line_number", $msg, $fr +om); my $result = $sender->MailMsg({ msg => $sender->{msg}, }) or die "$Mail::Sender::Error\n"; die "DB Error" . DBI->errstr; }

Update

If your application is throwing 'missing perl function errors' then that suggests that you are not testing your code sufficiently.

This is mostly caused by uninitialised objects, like this:

$self->{"calendar_".$n} = Wx::Calendar->new(.....); . . . $self->{calendar_9}->GetValue();
Because $self->{calendar_9} is not created (undefined), GetValue does not exist.

Are you really compiling code on user machines?

By 'compile time', I mean starting the perl interpreter, and the interpreter checks (compiles) all the dependencies and says that such-and-such a module has a syntax error and the code does not even execute.