在 Python 中,程序遇到異常時的退出行為取決于是否對異常進行了捕獲和處理:
-
未捕獲的異常:
如果異常發生后沒有被try-except
語句捕獲,程序會立即終止,并返回一個非零的退出碼(通常是1
),同時打印異常信息(包括錯誤類型、描述和堆棧跟蹤)。例如:
print(1 / 0) # 觸發 ZeroDivisionError 且未捕獲 print("這段代碼不會執行") # 程序已退出
運行后會直接崩潰,退出碼為
1
。 -
捕獲并處理異常:
如果用try-except
捕獲了異常,程序會跳過異常發生的位置,繼續執行except
塊及之后的代碼,不會退出,退出碼為0
(正常結束)。例如:
try:print(1 / 0) except ZeroDivisionError:print("捕獲到除零錯誤") print("程序繼續執行") # 這句會正常執行
運行后程序不會退出,最終退出碼為
0
。 -
主動退出:
可以通過sys.exit(n)
主動指定退出碼,n
為整數(0
表示正常退出,非零表示異常退出)。例如:
import sys try:print(1 / 0) except:sys.exit(2) # 主動指定退出碼為 2 并退出
總結:
- 未處理的異常會導致程序退出,退出碼非零;
- 處理后的異常不會終止程序,退出碼為 0(除非主動調用
sys.exit
指定非零值)。