
一杯茶,一包煙,一個Bug改一天
(資料圖)
程序錯誤,即英文的Bug,也稱為缺陷、臭蟲,是指在軟件運行中因為程序本身有錯誤而造成的功能不正常、死機、數據丟失、非正常中斷等現象。 早期的計算機由于體積非常龐大,有些小蟲子可能會鉆入機器內部,造成計算機工作失靈。史上的第一只 "Bug" ,真的是因為一只飛蛾意外走入一電腦而引致故障,因此Bug從原意為臭蟲引申為程序錯誤。 一些有趣的Bug有時也會成為一種樂趣。在電腦游戲中,一些Bug,假如不令游戲出現大錯誤的話,經常會變成一種玩游戲時的秘技。
異常:
異常即是一個事件,該事件會在程序執行過程中發生,影響了程序的正常執行。 一般情況下,在Python無法正常處理程序時就會發生一個異常。 異常是Python對象,表示一個錯誤。 當Python腳本發生異常時我們需要捕獲處理它,否則程序會終止執行。
處理:
捕捉異常可以使用try/except語句。 try/except語句用來檢測try語句塊中的錯誤,從而讓except語句捕獲異常信息并處理。 如果你不想在異常發生時結束你的程序,只需在try里捕獲它。
測試代碼:
try: a=int(input("請輸入第一個整數")) b=int(input("請輸入第二個整數")) result=a/b print("結果為:",result)except ZeroDivisionError: print("對不起,除數不允許為0")except ValueError: print("對不起,只能輸入數字串")print("程序結束")
測試結果1:
請輸入第一個整數python 對不起,只能輸入數字串 程序結束
進程已結束,退出代碼為 0
測試結果2:
請輸入第一個整數10 請輸入第二個整數25 結果為: 0.4 程序結束
進程已結束,退出代碼為 0
測試結果3:
請輸入第一個整數10 請輸入第二個整數0 對不起,除數不允許為0 程序結束
進程已結束,退出代碼為 0
測試代碼:
try: a=int(input("請輸入第一個整數")) b=int(input("請輸入第二個整數")) result=a/bexcept BaseException: print("出錯了")else: print("結果為:",result)print("程序結束")
測試結果1:
請輸入第一個整數1 請輸入第二個整數0 出錯了 程序結束
進程已結束,退出代碼為 0
測試結果2:
請輸入第一個整數a 出錯了 程序結束
進程已結束,退出代碼為 0
測試結果3:
請輸入第一個整數1 請輸入第二個整數2 結果為: 0.5 程序結束
進程已結束,退出代碼為 0
測試代碼:
try: a=int(input("請輸入第一個整數")) b=int(input("請輸入第二個整數")) result=a/bexcept BaseException: print("出錯了")else: print("結果為:",result)finally: print("無論是否產生異常,總會被執行的代碼")print("程序結束")
測試結果:
請輸入第一個整數25 請輸入第二個整數0 出錯了 無論是否產生異常,總會被執行的代碼 程序結束
進程已結束,退出代碼為 0
try: <語句> #運行別的代碼 except <名字name>: <語句> #如果在try部份引發了"name"異常 else: <語句> #如果沒有異常發生 finally: <語句> #無論是否產生異常,總會被執行的代碼
該模塊提供了一個標準接口,用于提取,格式和打印Python程序的堆棧痕跡。 它完全模仿了Python解釋器在打印堆棧跟蹤時的行為。 當您想在程序控制下打印堆棧跡線時,這非常有用,例如在解釋器周圍的“包裝器”中。
在日常開發中,我們會做一些基本的異常處理,但是有時候只能打印我們處理的結果或者將異常打印出來,不能直觀的知道在哪個文件中的哪一行出錯。traceback模塊就是為了解決這個問題出現的。
測試代碼:
import tracebacktry: print("-----------") print(1/0)except: traceback.print_exc()
測試結果:
Traceback (most recent call last): File "E:\pythonProject\Python_YSJ\chap11\??test.py???", line 7, in
print(1/0) ZeroDivisionError: division by zero進程已結束,退出代碼為 0