Apache-Voodoo
view release on metacpan or search on metacpan
lib/Apache/Voodoo/Exception.pm view on Meta::CPAN
###########################################################################
#
# Exception class definitions for Apache Voodoo.
#
###########################################################################
package Apache::Voodoo::Exception;
$VERSION = "3.0200";
use strict;
use warnings;
use Exception::Class (
'Apache::Voodoo::Exception',
'Apache::Voodoo::Exception::Compilation' => {
isa => 'Apache::Voodoo::Exception',
description => 'Module compilation failed',
fields => ['module']
},
'Apache::Voodoo::Exception::RunTime' => {
isa => 'Apache::Voodoo::Exception',
description => 'Run time exception from perl'
},
'Apache::Voodoo::Exception::RunTime::Thrown' => {
isa => 'Apache::Voodoo::Exception::RunTime',
description => 'Module threw an exception'
},
'Apache::Voodoo::Exception::RunTime::BadConfig' => {
isa => 'Apache::Voodoo::Exception::RunTime',
description => "Configuration Error",
},
'Apache::Voodoo::Exception::RunTime::BadCommand' => {
isa => 'Apache::Voodoo::Exception::RunTime',
description => "Controller returned an unsupported command",
fields => ['module', 'method', 'command']
},
'Apache::Voodoo::Exception::RunTime::BadReturn' => {
isa => 'Apache::Voodoo::Exception::RunTime',
description => "Controller didn't return a hash reference",
fields => ['module', 'method', 'data']
},
'Apache::Voodoo::Exception::ParamParse' => {
isa => 'Apache::Voodoo::Exception',
description => 'Parameters failed to parse'
},
'Apache::Voodoo::Exception::DBIConnect' => {
isa => 'Apache::Voodoo::Exception',
description => 'Failed to connect to the database'
},
'Apache::Voodoo::Exception::Application' => {
isa => 'Apache::Voodoo::Exception',
description => 'Application Error'
},
'Apache::Voodoo::Exception::Application::SessionTimeout' => {
isa => 'Apache::Voodoo::Exception::Application',
description => "Session has expired",
fields => ['target']
},
'Apache::Voodoo::Exception::Application::Redirect' => {
isa => 'Apache::Voodoo::Exception::Application',
description => "Controller redirected the request to another location",
fields => ['target']
},
'Apache::Voodoo::Exception::Application::DisplayError' => {
isa => 'Apache::Voodoo::Exception::Application',
description => "Controller request the display of an error message",
fields => ['code','target','detail']
},
'Apache::Voodoo::Exception::Application::AccessDenied' => {
isa => 'Apache::Voodoo::Exception::Application',
description => "Access to the requested resource has been denied",
fields => ['target','detail']
},
'Apache::Voodoo::Exception::Application::Unauthorized' => {
isa => 'Apache::Voodoo::Exception::Application',
description => "Access to the requested resource has been denied"
},
'Apache::Voodoo::Exception::Application::RawData' => {
isa => 'Apache::Voodoo::Exception::Application',
description => "Controller returned a raw data stream",
fields => ['headers','content_type','data']
},
);
Apache::Voodoo::Exception::RunTime->Trace(1);
Apache::Voodoo::Exception::RunTime->NoRefs(0);
sub parse_stack_trace {
my $trace = shift;
unless (ref($trace) eq "Devel::StackTrace") {
return [];
}
my @trace;
my $i = 1;
while (my $frame = $trace->frame($i++)) {
last if ($frame->package =~ /^Apache::Voodoo::Engine/);
next if ($frame->package =~ /^Apache::Voodoo/);
next if ($frame->package =~ /(eval)/);
my $nf = $trace->frame($i);
my $subroutine;
my @args;
if ($nf) {
$subroutine = $nf->subroutine;
@args = $nf->args;
}
my $f = {
'class' => $frame->package,
'function' => $subroutine || '',
'file' => $frame->filename,
'line' => $frame->line,
( run in 0.647 second using v1.01-cache-2.11-cpan-39bf76dae61 )