[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