[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

RE: [cgiapp] How do you handle errors?


Look forward to seeing the article :)  Thanks for the info, I'm going to
download Krang and check it out.

--------------------------------------------------
Jason A. Crome
Senior Software Engineer, DEVNET, Inc.
E-Mail: suppressed
http://www.devnetinc.com
 

> -----Original Message-----
> From: Sam Tregar [mailto:suppressed 
> Sent: Wednesday, August 11, 2004 1:08 PM
> To: Jason A. Crome
> Cc: suppressed
> Subject: Re: [cgiapp] How do you handle errors?
> 
> On Wed, 11 Aug 2004, Jason A. Crome wrote:
> 
> > What have others done?  What would you do in my place?  I'm 
> curious to 
> > hear, because this is starting to drive me nuts ;)
> 
> For Krang (http://krang.sf.net) we came up with a rather 
> novel error handling system that seemed to work well and 
> required no code in the individual run-modes to implement.  
> Here's how it worked:
> 
>   - When an error occurs the code that finds the error calls
>     Krang::Message::add_message() with a message identifier from
>     conf/messages.conf indicating what went wrong.
> 
>   - Krang::Message puts the message on a stack in the user's session
>     (managed by Apache::Session, of course).
> 
>   - The code then returns to the user, sometimes showing them the same
>     form and sometimes redirecting them elsewhere, maybe even to
>     another script within Krang.
> 
>   - Krang::CGI (a CGI::Application super-class) populates a special
>     loop with any pending error messages.  This loop is in the global
>     header.tmpl which is included on all Krang screens.  Since the
>     error messages are in the session it doesn't matter if this is a
>     different CGI or the same one that caught the error message!
> 
> This system worked very well, and it had a few important 
> advantages that might not be obvious:
> 
>   - Errors caught deep in the API can be made visible in the UI
>     without requiring catching code in the CGI layer.
> 
>   - Errors can be generated by one CGI and then shown on a screen from
>     another CGI.
> 
>   - Abstracting the error messages in a single conf file allowed
>     non-programmers to edit the message text, improving the user
>     experience.  Someday maybe there will be translations done using
>     this mechanism.
> 
> I've been meaning to write an article about this technique.  
> Thanks for reminding me!
> 
> -sam
> 


---------------------------------------------------------------------
Web Archive:  http://www.mail-archive.com/suppressed/
              http://marc.theaimsgroup.com/?l=cgiapp&r=1&w=2
To unsubscribe, e-mail: suppressed
For additional commands, e-mail: suppressed


Mail converted by mhonarc 2.6.15
This archive provided courtesy of JSW4.NET, Internet Hosting Services for Small Business.