Hi Michael
On 16/05/12 00:17, Michael Lackhoff wrote:
There seems to be something wrong (or at least not very robust) in
CAP::Dispatch::http_error(). It has the following code:
warn '[Dispatch] ERROR'
. ($ENV{REQUEST_URI} ? for request '$ENV{REQUEST_URI}': : ': ')
. $e-error . \n;
I guess $e is expected to be an Exception::Class object with an error
method but when a run mode dies the error seems to be passed as a string
not an object. So it dies again at this line in http_error with the
following log message (line numbers slightly different due to a few
added debug statements):
Yes - I remember struggling with this when I forked CGI:App and
CGI::App::Dispatch to produce CGI::Snapp and CGI::Snapp::Dispatch.
The problem starts with CAP::Dispatch V 2.18 line 406:
$output = $self-_run_app($module, $rm, $local_args_to_new);
which at least tells you the app got as far as starting.
In V 3.07, that's line 405.
Then, in _run_app(), lines 713 .. 716 say:
# otherwise, just pass it up the chain
} else {
die $@;
}
which tells you the code /in this case/ does not call throw_*.
And in V 3.07 that's lines 716 .. 719.
Conclusion: Either way, you're stuffed :-(.
If you don't want to switch to CGI::Snapp etc, or can't, I'd suggest not
relying on that exception code at all.
Rather: Just do what I did with the re-writes: Add logging code at the
start of all the major subs, which will simply if crudely tell you
exactly how far the code is getting before it dies.
HTH
--
Ron Savage
http://savage.net.au/
Ph: 0421 920 622
# CGI::Application community mailing list
####
## To unsubscribe, or change your message delivery options, ##
## visit: http://www.erlbaum.net/mailman/listinfo/cgiapp##
####
## Web archive: http://www.erlbaum.net/pipermail/cgiapp/ ##
## Wiki: http://cgiapp.erlbaum.net/ ##
####