Hi Anand,
On 10/06/2009 09:24 PM, Anand Chitipothu wrote:
I encountered a tricky situation with nested try-catch. Here is the sample code:
I managed to work-around that problem like this:
[...snip...]
try:
     f()
except:
     x = sys.exc_info()
     # do cleanup
     try:
         g()
     except:
         pass # ignore
     raise x[0], x[1], x[2]

It provides exception class, object and traceback to raise instead of
letting raise take the last exception/traceback.

Has anybody else faced similar situation? Any better solutions?


Well, i am wondering why you are extracting the exc_info() rather than saving off the exception object itself:
try:
    f()
except Exception, e
    saved = e
    try:
        g()
    except:
        pass # ignore
    raise e

I have not tested this on 3.0 but i am assuming this should work. If it doesn't try using finally:

try:
    f()
except Exception, e
    saved = e
    try:
        g()
    except:
        pass # ignore
    finally:
        raise e

cheers,
- steve
--
random non tech spiel: http://lonetwin.blogspot.com/
tech randomness: http://lonehacks.blogspot.com/
what i'm stumbling into: http://lonetwin.stumbleupon.com/
_______________________________________________
BangPypers mailing list
BangPypers@python.org
http://mail.python.org/mailman/listinfo/bangpypers

Reply via email to