[Seaside] Exceptions handling

David Shaffer cdshaffer at acm.org
Tue Mar 22 18:31:23 CET 2005


Andrei N.Sobchuck wrote:

>Hi!
>
>I'm exploring seaside/VW. 
>How ensure/ifCurtailed work in seaside/VW?
>
>WAClosureTest on 'go with ensure' prints:
>'ensure' 
>'a 1' 'ensure' 
>'b 2' 'ensure' 
>'c 3' 'ensure'
>
>Is that right?
>  
>

I'll let Avi address this.  I think it's fine...

>I implemented the following code:
>
>html 
>  submitButtonWithAction: 
>    [[1/0] ensure: [Transcript show: 'err'; cr]] 
>  text: 'tst'
>
>#ensure: block is executed only if 'debug' link is pressed. 
>I wonder why #ensure: block is called 4 times in 1st case
>and only 1 time in second?
>  
>
I think this behavior can be expected since Seaside wraps your callback 
handling in an error handler.  So, in non-deployment mode you have the 
equivalent of this:

[ [1/0] ensure: [Transcript show: 'err1'; cr] ] on: Error do: [:ex | 
Transcript show: 'err2'; cr]

Notice that err2 prints first.  That's basically what you're seeing in 
Seaside. Tthe equivalent of show: 'err2' is that the Seaside error 
handler, WAWalkbackErrorHandler, is starting a new render loop to render 
the stack trace page.  Basically you are still inside the do: argument 
block until you debug the app.  Then you exit that block and ensure: 
does its work.  My guess (completely untested) is that if you switch to 
deployment mode you'll see your ensure block run as expected.

David



More information about the Seaside mailing list