最初,我没有main()函数。我只有一大堆代码:
if __name__ == '__main__':
我正在尝试对代码进行一些重构,以便它更清洁,并且在代码引发异常的情况下进行清理。所以,现在我的代码看起来像这样:
if __name__ == '__main__':
try:
main()
except :
print "Unexpected error:", sys.exc_info()[0]
engine.close()
db.close()
问题是,引擎和数据库都是在main()中创建的,所以我实际上没有对它们的引用。有没有办法以这种方式处理异常,或者我是否必须在main()函数中更细化?
答案 0 :(得分:5)
将with
statement与适当的上下文管理员或try
... finally
一起使用,以确保您的连接已关闭。
答案 1 :(得分:2)
将您的异常处理放在main
。
答案 2 :(得分:0)
其他答案确实要好得多,但是可以也可以在Exception对象中传递数据,如果您自己引发它们或者捕获它们,修改它们并重新引发它们。
捕获和处理异常是一种更好的做法,以便main
出来的异常真的非常特殊。