當我嘗試使用該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
提交
取消