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