提问人:roulette01 提问时间:9/15/2023 最后编辑:jarlhroulette01 更新时间:9/15/2023 访问量:130
尝试;最后没有例外?
try; finally without except?
问:
假设我正在做一些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
答:
1赞
Erfan
9/15/2023
#1
最重要(也许也是显而易见的)区别是,您不再捕获在执行查询期间可能发生的异常。因此,如果失败,您将永远无法到达下一行(即光标不会关闭),因为程序将终止(或退出外部块,如注释中指出的那样@Barmar)。虽然某些数据库库和 Python 数据库驱动程序可能会在程序退出时自动关闭资源,但不建议依赖此行为,因为它可能导致资源泄漏和其他问题。 包含您的“清理”命令,这些命令将确保无论块内发生什么情况,光标都将关闭。
有关详细信息,请参阅 Python 的文档。some_cursor.execute(sql_query)
try/except
finally
try
评论
some_cursor.execute(sql_query)
execute()
close()
with
try/except