On Mon, Jan 16, 2012 at 10:11 PM, Mariano Martinez Peck <marianopeck@gmail.com> wrote:


On Mon, Jan 16, 2012 at 7:08 PM, St�phane Ducasse <stephane.ducasse@inria.fr> wrote:
Hi guys

when I do the following

|file|
[ file := StandardFileStream fileNamed: 'loglog.txt'.
file nextPutAll: 'Start'.
[ file nextPutAll: (Compiler evaluate: '55 + 88 poipuiu') asString] on: Error do: [:ex | ex outer errorReportOn: file].
] ensure: [file close].

I get a pop up DNU poipuiu while I would like to get the stack on the stream.�


Stef. If I understand correctly, ex outer will do "" Evaluate the enclosing exception action and return to here instead of signal if it resumes (see #resumeUnchecked:).""


Notice that #outer does a pass (kind of throw again) at the end:

outer
��� "Evaluate the enclosing exception action and return to here instead of signal if it resumes (see #resumeUnchecked:)."

��� | prevOuterContext |
��� self isResumable
��� ��� ifTrue: [
��� ��� ��� prevOuterContext := outerContext.
��� ��� ��� outerContext := thisContext contextTag ].
��� self pass.


So what you have to do is to use #signalerContext. Example:


|file|
[ file := StandardFileStream fileNamed: 'loglog.txt'.
file nextPutAll: 'Start'.
[ file nextPutAll: (Compiler evaluate: '55 + 88 adas') asString] on: Error do: [:ex | ex signalerContext errorReportOn: file ].
] ensure: [file close].


I think that does what you need.

May be my mistake is obvious but I do not see it.

Stef



--
Mariano
http://marianopeck.wordpress.com




--
Mariano
http://marianopeck.wordpress.com