Dotan Barak wrote:
<div class="moz-text-flowed" style="font-family: -moz-fixed">On
25/12/2009 19:27, Gary Herron wrote:
Dotan Barak wrote:
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
First of all, thank - I really appreciate your response.
:)
I must admit that i don't like the idea of parsing a string (if
tomorrow the format of the message will change,
i will be in a deep trouble ...).
Is there is another way which doesn't involve string parsing?
Thanks
Dotan
</div>
I think there's a more fundamental question here. You're apparently
looking to build your own error message instead of using the one already
generated. But as you point out, you might end up parsing the existing
error message in order to do that, and that's fragile coding. My take
is that if you're using "eval" in your code, your user is clearly a
programmer. So why are you not letting that programmer see the real
error message, instead of trying to pretty it up? You can add to the
message, but shouldn't need to hide the original one.
To put it the other way around, if your user can't understand the python
error messages, you should probably not be using unrestricted "eval" on
something that user supplies. Lots more errors than NameError, and many
of them are more subtle and dangerous.
DaveA
--
http://mail.python.org/mailman/listinfo/python-list