由于以下原因,退出功能不起作用

问题描述 投票:-2回答:2

[当我尝试使用exit()功能时,由于异常该代码没有停止,如何取消它?

def start(number):
    try:
        print(9 ** number)
        exit()
    except:
        print("problem")
        start()
python exit
2个回答
0
投票

您正在捕获所有异常,包括SystemExit

使用except Exception来捕获所有内置的,不存在的异常。

在您的特定情况下,我建议您只捕获一个TypeError,因为这是您希望对number的错误类型抛出的内容。也就是说,在将exception-block中的无参数调用固定为start()之后,这将引发TypeError本身。


0
投票

您需要查看手册中的Exception Hierarchy。基础异常被适当地命名为BaseException,其他所有异常都继承自该异常。 BaseException有四个直接后代:SystemExitKeyboardInterruptGeneratorExitException

exit引发SystemExit异常,您正在使用无条件except子句捕获该异常。通常,您只想捕获Exception及其任何后代,这是所有其他例外。因此:

try:
    ...
except Exception:
    ...

这将允许其他三种异常按需冒泡,并允许您捕获更具体的异常树。最好只捕获尽可能多的特定类型。

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