尝试;终于没有例外?

问题描述 投票:0回答:1

假设我正在做一些sql查询:

try:
  some_cursor.execute(sql_query) 
finally:
  some_cursor.close()

与上面有什么不同吗:

some_cursor.execute(sql_query) 
some_cursor.close()

它们看起来是等价的,因为没有异常处理。 我确实记得读过,如果

some_cursor.execute(sql_query) 
有错误,那么在后面的关闭中光标可能无法正确关闭,但前一种情况的
finally
块可以确保这一点?

python exception try-catch
1个回答
0
投票

最重要(也许是明显)的区别是您不再捕获查询执行期间可能发生的异常。因此,如果

some_cursor.execute(sql_query)
失败,您将永远不会到达下一行(即光标不会关闭),因为程序将崩溃。虽然某些数据库库和 Python 数据库驱动程序可能会在程序退出时自动关闭资源,但不建议依赖此行为,因为它可能会导致资源泄漏和其他问题。
finally
包含“清理”命令,这将确保无论
try
块内发生什么情况,光标都会关闭。 请参阅 Python 文档 了解更多信息。

© www.soinside.com 2019 - 2024. All rights reserved.