Home : Documentation : Embperl
Google Web perl.apache.org

 
Home
 
Features
 
Introduction
 
Documentation
 
README
 
README.v2
 
Configuration
 
Embperl
 
Embperl::Object
 
Embperl::Form::Validate
 
Embperl::Syntax
 
Embperl::Recipe
 
Embperl::Mail
 
1.3.6 documentation
 
DBIx::Recordset
 
Installation
 
Download
 
Support
 
Changes
 
Wiki
 
More infos
 
Add info about Embperl
 
Login

    Stable 2.4.0
    Beta 2.5.0_3
Support the development of Embperl! More...
Error trapping
[ << Prev: Encoding/UTF-8 ] [ Content ] [ Next: Utility Functions >> ]

When an error occurs inside an Embperl page, Embperl will display an error page, containing the error message.

Sometimes you want to have a different behaviour. One possibility is to let Apache display a custom error page (of course only when you run under mod_perl).

To get this working you need to set the option optReturnError (262144) in your httpd.conf in the EMBPERL_OPTIONS directive.

With this option set, Embperl sends no output in case of an error. It returns the error back to Apache or the calling program. When running under mod_perl this gives you the chance to use the Apache ErrorDocument directive to show a custom error-document. Inside the ErrorDocument you can retrieve the error messages with

  $errors = $req_rec -> prev -> pnotes('EMBPERL_ERRORS') ;

where $errors is a array reference.

If you want to trap exceptions in a Embperl document, that you call via Execute, you can do this by passing an array to Execute, which receives all error/warning messages and/or all error objects.

    [-
    Execute ({inputfile => 'foo.epl', errors => \@errors}) ;
    -]
    
    [$if @errors$]
        The following errors had occured:<br>
        [$foreach $err (@errors)$]
            [+ $err +]<br>         
        [$endforeach$]
    [$endif$]

In case you call die inside the executed page and pass an object (or a reference) to die instead of a string this will also show up in @errors. The last object passed to die is also available via $epreq - errobj>.

$epreq - error> can be used to test if an error occured so far during the current request. You can also set $epreq - error> to false to reset Embperl's internal error condition.

If the option optReturnError or an error array is passed to a component the error flag is reset after the execution of component.

If an error array is passed to a component, the errors inside the component are not added to the overall errors of the request and therefore will not cause Embperl to display an error page.

An more seldom used option is optDisableEmbperlErrorPage (2), which tells tells Embperl not to send its own errorpage in case of failure, but instead show as much of the page as possible. Errors are only logged to the log file.


[ << Prev: Encoding/UTF-8 ] [ Content ] [ Next: Utility Functions >> ]

© 1997-2012 Gerald Richter / ecos gmbh