<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <meta content="text/html; charset=ISO-8859-1"
      http-equiv="Content-Type">
  </head>
  <body bgcolor="#ffffff" text="#000000">
    Looks like I was wrong in where the error occurred, although the
    main issue is unchanged. The problem is in finalize rather than
    prepare. <br>
    <br>
    On 8/31/2010 10:08 AM, Bill Moseley wrote:
    <blockquote
      cite="mid:AANLkTik8dte1JpXeKbYBaVhrNPyu7YE0ja2HPRyZC80B@mail.gmail.com"
      type="cite">Even the top-level handle_request is wrapped in an
      eval, but it tests $@ instead of the return value of eval like it
      should. &nbsp;Is it possible something is clearing the $@ var?
      <div class="gmail_quote">
        <div><br>
        </div>
        <div>It's pretty easy to edit Catalyst.pm to check.</div>
        <div><br>
        </div>
      </div>
    </blockquote>
    I hadn't seen the eval return value issue, although you're right.
    The error is reported on the console just fine. The problem is, that
    is the *only* place it is reported. The eval wrapper causes the
    finalize to be partially skipped.<br>
    <br>
    Here's the stack trace at point of failure (more or less):<br>
    <br>
    $ =
    ARM::Model::User::get_session_store_delegate(ref(ARM::Model::User),
    'fbc69cb40a085cae169b26034f64832d12a9c305') called from file
    `C:/perl/site/5.10.1/lib/Catalyst/Plugin/Session/Store/Delegate.pm'
    line 56<br>
    $ =
    Catalyst::Plugin::Session::Store::Delegate::get_session_store_delegate(ref(ARM),
    'fbc69cb40a085cae169b26034f64832d12a9c305') called from file
    `C:/perl/site/5.10.1/lib/Catalyst/Plugin/Session/Store/Delegate.pm'
    line 40<br>
    $ =
    Catalyst::Plugin::Session::Store::Delegate::session_store_delegate(ref(ARM))
    called from file
    `C:/perl/site/5.10.1/lib/Catalyst/Plugin/Session/Store/Delegate.pm'
    line 94<br>
    . =
    Catalyst::Plugin::Session::Store::Delegate::store_session_data(ref(ARM),
    'expires:fbc69cb40a085cae169b26034f64832d12a9c305', 1283271921)
    called from file
    `C:/perl/site/5.10.1/lib/Catalyst/Plugin/Session.pm' line 148<br>
    . = Catalyst::Plugin::Session::_save_session_expires(ref(ARM))
    called from file
    `C:/perl/site/5.10.1/lib/Catalyst/Plugin/Session.pm' line 106<br>
    . = Catalyst::Plugin::Session::finalize_headers(ref(ARM)) called
    from file `C:/perl/site/5.10.1/lib/Catalyst.pm' line 1762<br>
    $ = Catalyst::finalize(ref(ARM)) called from file
    `C:/perl/site/5.10.1/lib/Catalyst/Plugin/Compress/Deflate.pm' line
    16<br>
    [other plugins here]<br>
    $ = Catalyst::Plugin::Session::PerUser::finalize(ref(ARM)) called
    from file
    `C:/perl/site/5.10.1/lib/MSWin32-x86-perlio/Class/MOP/Method/Wrapped.pm'
    line 48<br>
    ...<br>
    $ = ARM::finalize(ref(ARM)) called from file
    `C:/perl/site/5.10.1/lib/Catalyst.pm' line 1927<br>
    <br>
    So, the issue is: because I use
    Catalyst::Plugin::Session::Store::Delegate, my model methods are
    called in the finalize. These methods (based on my DBIC model class)
    die, and this drops all feedback, as finalize_headers is never
    completed and finalize_body never called. So I could overcome this
    by fixing my model to never fail - proxying off the DBIC class in
    some way to fake session handling on error. (Although I suspect this
    might be better part of Catalyst::Plugin::Session::Store::Delegate.)<br>
    <br>
    The problem is: finalize_headers is normally called after
    finalize_error, so even if I detect an error, there seems to be no
    way to go back and display that error. It seems to me that my model
    code ought to be able to fail in a reasonable way and get something
    displayed. <br>
    <br>
    --S<br>
    <br>
    <div class="moz-signature"><span style="color: rgb(102, 0, 0);">Stuart
        Watt<br>
        ARM Product Developer<br>
        Information Balance</span></div>
    <br>
    <br>
    <br>
    <blockquote
      cite="mid:AANLkTik8dte1JpXeKbYBaVhrNPyu7YE0ja2HPRyZC80B@mail.gmail.com"
      type="cite">-- <br>
      Bill Moseley<br>
      <a moz-do-not-send="true" href="mailto:moseley@hank.org">moseley@hank.org</a><br>
      <br>
      --
      <br>
      This message was scanned by ESVA and is believed to be clean.
      <br>
      <a moz-do-not-send="true"
href="http://antispam.infobal.com/cgi-bin/learn-msg.cgi?id=BAC6E2807E.050DF">Click
        here to report this message as spam.</a>
      <pre wrap="">
<fieldset class="mimeAttachmentHeader"></fieldset>
_______________________________________________
List: <a class="moz-txt-link-abbreviated" href="mailto:Catalyst@lists.scsys.co.uk">Catalyst@lists.scsys.co.uk</a>
Listinfo: <a class="moz-txt-link-freetext" href="http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/catalyst">http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/catalyst</a>
Searchable archive: <a class="moz-txt-link-freetext" href="http://www.mail-archive.com/catalyst@lists.scsys.co.uk/">http://www.mail-archive.com/catalyst@lists.scsys.co.uk/</a>
Dev site: <a class="moz-txt-link-freetext" href="http://dev.catalyst.perl.org/">http://dev.catalyst.perl.org/</a>
</pre>
    </blockquote>
  </body>
</html>