当我尝试使用该exit()功能时,代码不会因为异常而停止,如何取消它?def start(number): try: print(9 ** number) exit() except: print("problem") start()
2 回答
跃然一笑
TA贡献1826条经验 获得超6个赞
您需要查看手册中的异常层次结构。基本异常被适当地命名BaseException,其他所有异常都继承自它。有四个直接后代BaseException:SystemExit、KeyboardInterrupt和。GeneratorExitException
exit引发SystemExit异常,您正在使用无条件except条款捕获该异常。通常你只想捕获Exception它的任何后代,这是所有其他异常。所以:
try: ... except Exception: ...
这允许其他三种异常按它们应该的方式冒泡,并允许您捕获更具体的异常树。最好你只捕获更具体的类型,尽可能具体。
慕容森
TA贡献1853条经验 获得超18个赞
您正在捕获所有异常,包括SystemExit.
使用except Exception以捕获所有内置的非退出异常。
在您的具体情况下,我建议只捕获 a TypeError,因为这是您希望因 . 的不良类型而抛出的内容number。也就是说,在您修复start()except-block 中的无参数调用之后,它将引发 aTypeError自身。
添加回答
举报
0/150
提交
取消
