
Ralf Gommers wrote:
Probably the easiest for your purpose is this:
def divbyzero(): return 1/0
try: a = divbyzero() except ZeroDivisionError as err: print 'problem occurred at line X' raise err
I get an error with this syntax -- is thin 2.6 only? In [10]: run error.py error.py:9: Warning: 'as' will become a reserved keyword in Python 2.6 ------------------------------------------------------------ File "error.py", line 9 except ZeroDivisionError as err: ^ SyntaxError: invalid syntax
print 'problem occurred at line X' raise
Maybe better to use a logger instead of print, but you get the idea.
definitely don't print! a lib function should never print (unless maybe with a debug flag or something set). I don't know if there is a standard logging approach you could use. I'd rather see info added to the Exception, or a new Exception raised with info. Now, another option. It seems in this case that you know what Exception(s) you are trying to catch, and you want to add some information to the message. If you don't need to keep the old traceback, you can do something like: try: 4/0 except ZeroDivisionError, err: raise Exception("A new error with old message also: %s"%err.message) It doesn't appear to be possible(well, at least not easy!) to add or change the message on an existing exception and then re-raise it (kind of makes me want mutable strings) I suspect that for this use, this would suffice, what the user really wants to know is where in their file the error occurred, not where in the converting it occurred. This assumes that the converting code puts useful messages in the errors. Otherwise, there is info in the traceback module, so you can get more by doing this: import traceback try: 4/0 except ZeroDivisionError, err: line, col = 45, 10 raise Exception(traceback.format_exc()+"\error took place at line: %i, column %i\n"%(line, col)) -Chris -- Christopher Barker, Ph.D. Oceanographer Emergency Response Division NOAA/NOS/OR&R (206) 526-6959 voice 7600 Sand Point Way NE (206) 526-6329 fax Seattle, WA 98115 (206) 526-6317 main reception Chris.Barker@noaa.gov