Python 3.x PythonDB连接关闭,在finally子句中使用try-catch

Python 3.x PythonDB连接关闭,在finally子句中使用try-catch,python-3.x,Python 3.x,所以我想知道什么是在Finally子句中更有效的关闭连接,或者在Finally子句中有一个显式的try-catch语句是更好的方法 try: #some try logic except: print("something") finally: try: my_db_session.close() except: pass 还是这个1 try: #

所以我想知道什么是在Finally子句中更有效的关闭连接,或者在Finally子句中有一个显式的try-catch语句是更好的方法

    try: #some try logic
    except:
        print("something")
    finally:
        try:
            my_db_session.close()
        except:
            pass
还是这个1

    try: #some try logic
    except:
        print(traceback.print_exc())
    finally:
        my_db_session.close()
        

在我看来,这取决于您是否关心由
my\u db\u session.close()
引发的异常
try:except:pass
忽略该异常,但最好让调用方处理它

至于效率,你可能指的是速度,我想说,再做一次
try/except
语句,绝对不会对速度造成任何损失

如果您所说的效率是指“确保连接确实已关闭”,这取决于
my\u db\u session.close()
在出现异常时所做的操作。始终执行
finally
子句,因此肯定会调用
my\u db\u session.close()