猿问

exit 函数不工作,因为 except

当我尝试使用该exit()功能时,代码不会因为异常而停止,如何取消它?


def start(number):

    try:

        print(9 ** number)

        exit()

    except:

        print("problem")

        start()


www说
浏览 91回答 2
2回答

跃然一笑

您需要查看手册中的异常层次结构。基本异常被适当地命名BaseException,其他所有异常都继承自它。有四个直接后代BaseException:SystemExit、KeyboardInterrupt和。GeneratorExitExceptionexit引发SystemExit异常,您正在使用无条件except条款捕获该异常。通常你只想捕获Exception它的任何后代,这是所有其他异常。所以:try:     ...     except Exception:     ...这允许其他三种异常按它们应该的方式冒泡,并允许您捕获更具体的异常树。最好你只捕获更具体的类型,尽可能具体。

慕容森

您正在捕获所有异常,包括SystemExit.使用except Exception以捕获所有内置的非退出异常。在您的具体情况下,我建议只捕获 a TypeError,因为这是您希望因 . 的不良类型而抛出的内容number。也就是说,在您修复start()except-block 中的无参数调用之后,它将引发 aTypeError自身。
随时随地看视频慕课网APP

相关分类

Python
我要回答