args attribute of Exception objects

Steve Holden steve at holdenweb.com
Mon Apr 11 10:57:32 EDT 2005


Sebastien de Menten wrote:
> Jeremy Bowers <jerf at jerf.org> wrote in message news:<pan.2005.04.08.16.07.30.85408 at jerf.org>...
> 
>>On Fri, 08 Apr 2005 09:32:37 +0000, Sébastien de Menten wrote:
>>
>>
>>>Hi,
>>>
>>>When I need to make sense of a python exception, I often need to parse the 
>>>string exception in order to retrieve the data.
>>
>>What exactly are you doing with this info? (Every time I started to do
>>this, I found a better way. Perhaps one of them will apply for you.)
>>
>>(As a general comment, I'd point out that you don't have to check the
>>entire error message; checking for a descriptive substring, while still
>>not "safe", is at least safe*r*.)
> 
> 
> I have symbolic expressions in a dictionnary like:
> 
> dct = dict( a = "b**2 + c", b = "cos(2.3) + sin(v)", v = "4", c =
> "some_very_expensive_function(v)")
> 
> I want to build a function that finds the links between all those
> expressions (think about computing dependencies between cells in a
> spreadsheet).
> 
> All I do is:
> def link(name):
>    dependencies = {}
>    while True:
>       try:
>          eval(dct[name], globals(), dependencies)
>       except NameError,e:
>          dependencies[e.args[0][6:-16]] = 1
>       else:
>          return dependencies
> 
> globals() can be replaced by a custom dictionnary for security
> purposes.
> variation on the theme can:
>   - check SyntaxError and give interlligent feedback to user (BTW,
> SyntaxError args are much smarter)
>   - find or/and eval recursively the whole tree and keep in cache
> values,...
> 
> Seb
Wouldn't it actually be better to use a namespace that reported attempts 
to use its members? Then when you evaluated an expression you would be 
in control of how the attempted accesses were recorded, and could 
provide exactly the needed information.

regards
  Steve
-- 
Steve Holden        +1 703 861 4237  +1 800 494 3119
Holden Web LLC             http://www.holdenweb.com/
Python Web Programming  http://pydish.holdenweb.com/




More information about the Python-list mailing list