[Cuis-dev] question about Compiler evaluate:
Weslleymberg Lisboa
weslleym.lisboa at gmail.com
Fri Jan 17 18:11:19 PST 2025
Did some digging here. Even if you don't have the the whole error
message, you can grab the variable name:
errorMsg := '' .
[ Compiler evaluate: '1 + x' ] on: UndeclaredVariableWarning do: [ :ex |
errorMsg := ex variableName, ' is Undeclared'.].
errorMsg inspect.
Learned something new: the #defaultAction is taken if the
Warning/Exception is not handled. So once you do "on:
UndeclaredVariableWarning do: [ <do anything> ]" it won't print to the
Transcript.
Em 17/01/2025 19:56, Mark Volkmann escreveu:
> I see the message I'm trying to capture is written to the Transcript in
> the UndeclaredVariableWarning instance method defaultAction.
> So it doesn't exist as the value of any instance variable I can access.
> I don't see an easy way to get such error messages from Compiler evaluate:.
>
> On Fri, Jan 17, 2025 at 4:50 PM Mark Volkmann <r.mark.volkmann at gmail.com
> <mailto:r.mark.volkmann at gmail.com>> wrote:
>
> Thanks! That allows me to avoid writing an error message to the
> Transcript.
> The other thing I want to do is get the error message ("x is
> Undeclared" in this case) so I can display it in my UI.
> Do you know how I can get that?
> I don't see that in any of the instance variables associated with
> either exception object.
>
> On Fri, Jan 17, 2025 at 12:46 PM Weslleymberg Lisboa via Cuis-dev
> <cuis-dev at lists.cuis.st <mailto:cuis-dev at lists.cuis.st>> wrote:
>
> Hi, Mark
>
> I found 'is Undeclared' in UndeclaredVariableWarning>>defaultAction
> which seems to match what you see in the transcript.
>
> I was able to get rid of the transcript error message by doing:
>
> expression := '1 + x'.
> [ Compiler evaluate: expression ] on: UndeclaredVariableWarning
> do: [:ex
> | ex resume: false] on: Error do: [:ex | ex inspect ]
>
> To give a little context, I searched for references to the class
> UndeclaredVariableWarning. One of the results was
> Encoder>>#undeclared:
> where the comments mention how to disable the warning.
>
> Em 17/01/2025 09:40, Mark Volkmann via Cuis-dev escreveu:
> > In a Workspace, if I "Do It" the first expression below and
> "Print It"
> > the second expression, it prints 3 as expected.
> >
> > expression := '1 + 2'.
> > [ Compiler evaluate: expression ] on: Error do: [ :ex | ex
> inspect ].
> >
> > Now if I change the 2 in expression to x and repeat, it prints
> > the following:
> >
> > MessageNotUnderstood: UndefinedObject>>adaptToNumber:andSend:
> >
> > It also writes the following to the Transcript:
> >
> > UndefinedObject>>DoIt (x is Undeclared)
> >
> > Looking in the Inspect window I see that none of the instance
> variables
> > contain "x is Undeclared". I really want to get that string.
> I've
> > searched the Compiler methods and haven't found a way to do
> this. Does
> > anyone know how I could access that error message?
> >
> > I'd also like to prevent the error message from being written
> to the
> > Transcript so I can completely handle it in my code.
> >
> > --
> > R. Mark Volkmann
> > Object Computing, Inc.
> >
>
> --
> Wéslleymberg Lisboa
> Graduado em Sistemas de Informação
> Docente no IFFluminense - Campus Itaboraí
>
> --
> Cuis-dev mailing list
> Cuis-dev at lists.cuis.st <mailto:Cuis-dev at lists.cuis.st>
> https://lists.cuis.st/mailman/listinfo/cuis-dev <https://
> lists.cuis.st/mailman/listinfo/cuis-dev>
>
>
>
> --
> R. Mark Volkmann
> Object Computing, Inc.
>
>
>
> --
> R. Mark Volkmann
> Object Computing, Inc.
--
Wéslleymberg Lisboa
Graduado em Sistemas de Informação
Docente no IFFluminense - Campus Itaboraí
More information about the Cuis-dev
mailing list