为了账号安全,请及时绑定邮箱和手机立即绑定

exit 函数不工作,因为 except

exit 函数不工作,因为 except

www说 2023-01-04 13:31:30
当我尝试使用该exit()功能时,代码不会因为异常而停止,如何取消它?def start(number):    try:        print(9 ** number)        exit()    except:        print("problem")        start()
查看完整描述

2 回答

?
跃然一笑

TA贡献1826条经验 获得超6个赞

您需要查看手册中的异常层次结构。基本异常被适当地命名BaseException,其他所有异常都继承自它。有四个直接后代BaseExceptionSystemExitKeyboardInterrupt和。GeneratorExitException

exit引发SystemExit异常,您正在使用无条件except条款捕获该异常。通常你只想捕获Exception它的任何后代,这是所有其他异常。所以:

try:
    ...
    except Exception:
    ...

这允许其他三种异常按它们应该的方式冒泡,并允许您捕获更具体的异常树。最好你只捕获更具体的类型,尽可能具体。


查看完整回答
反对 回复 2023-01-04
?
慕容森

TA贡献1853条经验 获得超18个赞

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

使用except Exception以捕获所有内置的非退出异常。

在您的具体情况下,我建议只捕获 a TypeError,因为这是您希望因 . 的不良类型而抛出的内容number。也就是说,在您修复start()except-block 中的无参数调用之后,它将引发 aTypeError自身。


查看完整回答
反对 回复 2023-01-04
  • 2 回答
  • 0 关注
  • 90 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信