在操作系统仍在运行时,是否有可能无法执行python代码的finally
块?
我需要用Linux机器控制一台机器。步进电机的方波信号由同一环境中的外部程序产生,如果由于某种原因无法停止方波信号,则机器会受到物理损坏。因此,无论我的应用程序如何崩溃,在任何情况下调用外部程序的stop方法都非常重要。
答案 0 :(得分:3)
根据官方documentation:
在离开try语句之前总是执行finally子句, 是否发生了异常。当有例外时 发生在try子句中并且没有被except处理 子句(或者它发生在except或else子句中),它是 在finally子句执行后重新引发。最后 当任何其他条款出现时,子句也会在“出路”上执行 try语句通过break,continue或return语句保留。
无论如何,在某些情况下(例如,程序崩溃),仍然可能发生程序没有进入finally语句,但此时为了防止程序崩溃后资源打开(例如,数据库会话),你需要使用不同的机制(监控等)。