in reply to grabbing un-handled exceptions via modperl2

I think the safest way is to subclass whatever registry you're using ... but maybe you can borrow from ModPerl::RegistryCooker

###################################################################### +### # func: error_check # dflt: error_check # desc: checks $@ for errors # args: $self - registry blessed object # rtrn: Apache2::Const::SERVER_ERROR if $@ is set, Apache2::Const::OK +otherwise ###################################################################### +### sub error_check { my $self = shift; # ModPerl::Util::exit() throws an exception object whose rc is # ModPerl::EXIT # (see modperl_perl_exit() and modperl_errsv() C functions) if ($@ && !(ref $@ eq 'APR::Error' && $@ == ModPerl::EXIT)) { $self->log_error($@); return Apache2::Const::SERVER_ERROR; } return Apache2::Const::OK; }

Replies are listed 'Best First'.
Re^2: grabbing un-handled exceptions via modperl2
by mmlenz (Acolyte) on May 06, 2013 at 16:44 UTC
    I just tried that ModPerl::RegistryPreforkCustom and the call trace isn't as complete which makes sense because I'd be checking it sooner.
    Line 207 of file /usr/lib/perl5/ModPerl/RegistryCooker.pm called ModPerl::RegistryPreforkCustom::error_check
    Line 170 of file /usr/lib/perl5/ModPerl/RegistryCooker.pm called ModPerl::RegistryCooker::run
    Line 19 of file /usr/lib/perl5/ModPerl/RegistryPrefork.pm called ModPerl::RegistryCooker::default_handler
    Line 0 of file -e called ModPerl::RegistryPrefork::handler
    Line 0 of file -e called (eval)
    
    vs ($SIG{DIE))
    
    Line 11 of file /home/mlenz/mlenz.domain.com/cgi-bin/details called main::__ANON__
    Line 204 of file /usr/lib/perl5/ModPerl/RegistryCooker.pm called ModPerl::ROOT::ModPerl::RegistryPreforkCustom::home_mlenz_mlenz_2edomain_2ecom_cgi_2dbin_details::handler
    Line 204 of file /usr/lib/perl5/ModPerl/RegistryCooker.pm called (eval)
    Line 170 of file /usr/lib/perl5/ModPerl/RegistryCooker.pm called ModPerl::RegistryCooker::run
    Line 19 of file /usr/lib/perl5/ModPerl/RegistryPrefork.pm called ModPerl::RegistryCooker::default_handler
    Line 0 of file -e called ModPerl::RegistryPrefork::handler
    Line 0 of file -e called (eval)
    
    Looks like I'd need to subclass the cooker instead and override one or more of the other methods.