Is it possible to get the erroneous variable when getting a NameError exception?
Gary Herron
gherron at islandtraining.com
Fri Dec 25 12:27:02 EST 2009
Dotan Barak wrote:
> Hi.
>
> I'm trying to evaluate a string and getting a NameError
> (it is expected, since the variable my_number wasn't provided in the
> "locals" dictionary).
>
> <--snip start-->
> >>> eval("my_number < 10", {"__builtins__":None}, {})
> Traceback (most recent call last):
> File "<stdin>", line 1, in ?
> File "<string>", line 0, in ?
> NameError: name 'my_number' is not defined
> <--snip end-->
>
> My question is: how can i know which variable name / symbol causes the
> NameError exception?
> In my example, this symbol is my_number.
>
> Using that information, I will be able to print a nice error message
> to the user.
>
>
> Thanks
> Dotan
>
>
Recover the exception, and examine the tuple of args or the message string.
>>> try:
... eval("my_number < 10", {"__builtins__":None}, {})
... except NameError,e:
... print e.args
... print e.message
...
("name 'my_number' is not defined",)
name 'my_number' is not defined
More information about the Python-list
mailing list