help-smalltalk
[Top][All Lists]
Advanced

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

[Help-smalltalk] Re: Magritte-Seaside and validation errors


From: Paolo Bonzini
Subject: [Help-smalltalk] Re: Magritte-Seaside and validation errors
Date: Mon, 04 May 2009 12:50:10 +0200
User-agent: Thunderbird 2.0.0.21 (Macintosh/20090302)

I think this is because Magritte makes very demanding use of exceptions.
 It might be that Squeak and GNU Smalltalk behave in a different way.

Can you try filing in the attached class and then evaluating:

{TestError new resumableTest: #halt outerHandler: #yourself.
TestError new resumableTest: #halt outerHandler: #resume.
TestError new beResumable; resumableTest: #pass outerHandler: #yourself.
TestError new beResumable; resumableTest: #pass outerHandler: #resume.
TestError new beResumable; resumableTest: #outer outerHandler: #yourself.
TestError new beResumable; resumableTest: #outer outerHandler: #resume.
TestError new beResumable; resumableTest: #resumeOuter outerHandler:
#yourself.
TestError new beResumable; resumableTest: #resumeOuter outerHandler:
#resume}

under Squeak?

Thanks,

Paolo


Error subclass: #TestError
        instanceVariableNames: 'resumable'
        classVariableNames: ''
        poolDictionaries: ''
        category: ''!

!TestError methodsFor: 'testing'!

isResumable
        ^resumable ifNil: [ false ]
!

beResumable
        resumable := true
!

description
        ^'test'
!

resumeOuter
        self resume: self outer
!

resumableTest: ifResumableSymbol outerHandler: outerHandlerSymbol
        [[ self signal. ^true ]
                on: TestError
                do: [ :err |
                        err isResumable 
                                ifTrue: [err perform: ifResumableSymbol]
                                ifFalse: [err beResumable; signal]]]
                on: TestError
                do: [ :err | err perform: outerHandlerSymbol ].
        ^false
! !



reply via email to

[Prev in Thread] Current Thread [Next in Thread]