IronPython异常的其余部分在哪里?
我可能理解错了,但我发现当在IronPython中出现SystemError
时,我得到的堆栈跟踪和异常信息总是不完整。我是这样做的:
try:
with SQLConnection(DATASOURCES[SCHEDULEDB]) as db:
db.execute_sql( command + ' ' + ','.join(block) + ';' )
except Exception, e:
print 'caught an exception'
print "Unexpected error:", sys.exc_info()[0]
print e
raise
finally:
db.close()
engine.close()
然而,我看到的结果却是这个:
Traceback (most recent call last):
SystemError: The connection has been disabled.
2 个回答
1
在IronPython这个程序中,有一些标志可以让.NET的错误信息在出现时显示它们的调用堆栈。
ipy -X:ShowClrExceptions -X:ExceptionDetail my_script.py args
7
试试这个:
import traceback
traceback.print_exc()
不要直接打印异常对象。在Python中,异常对象并不会直接保存错误发生时的调用记录,而是和其他两个信息一起存在于sys.exc_info()
中。
你也可以这样做:
import System
...
except System.Exception, e:
这样你就会得到一个普通的.NET异常对象,而不是Python的异常对象。