停止Python代码没有错误

Nic*_*ber 3 python python-3.3

比方说,我有一段不在函数中的代码

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未被用户捕获并且退出的东西(调试器将捕获它以便保持解释器运行并获得有关退出程序的信息).


Cap*_*awk 5

您可以通过执行以下操作来完成所需的操作:

import os
os._exit(1)
Run Code Online (Sandbox Code Playgroud)

  • @JBernado:怎么样? (2认同)
  • @Paul:他要求在不引发例外的情况下退出。使用sys.exit时,Python总是会引发异常。我同意这不是应该做的事情,但这就是这个问题的答案。 (2认同)