比方说,我有一段不在函数中的代码
x = 5
y = 10
if x > 5:
print("stopping")
Run Code Online (Sandbox Code Playgroud)
在print语句之后我可以放置什么来阻止代码进一步运行?Sys.exit()有效,但会引发一个我不希望在程序中出现的错误.我希望它能够悄悄地停止代码,就像它已经到达主循环的末尾一样.谢谢.
Eri*_*got 10
正如JBernardo指出的那样,sys.exit()
提出了一个例外.这个例外是SystemExit.当它没有被用户代码处理时,解释器干净地退出(调试程序可以调试程序可以捕获它并保持程序的控制,例如,由于这种机制) - 反对os._exit()
,这是一个无条件的堕胎程序.
此异常未被捕获except Exception:
,因为SystemExit
不会继承Exception
.然而,它被一个裸except:
条款抓住了.
因此,如果您的程序看到异常,您可能希望通过使用except Exception:
而不是使用来捕获更少的异常except:
.也就是说,不鼓励捕获所有异常,因为这可能会隐藏真正的问题,所以如果可以的话,通过使except
条款(如果有的话)更具体来避免它.
我的理解为什么这个SystemExit
异常机制是很有用的是用户代码经过任何finally
条款后,一个sys.exit()
一个在发现except
子句:文件可以干净地关闭等; 然后解释器捕获任何SystemExit
未被用户捕获并且退出的东西(调试器将捕获它以便保持解释器运行并获得有关退出程序的信息).
您可以通过执行以下操作来完成所需的操作:
import os
os._exit(1)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
9384 次 |
最近记录: |