1. 程式人生 > 其它 >python 報錯traceback_Python基礎--異常和報錯

python 報錯traceback_Python基礎--異常和報錯

技術標籤:python 報錯traceback

# 當編寫程式的時候,錯誤是難免的,如語法錯誤,邏輯錯誤等。# 當Python檢測到一個錯誤時,直譯器就無法繼續執行下去,# 於是丟擲相應資訊,這些可以籠統地成為異常資訊。# 錯誤 a = input("input a int param: ") num = int(a)print(num)# 當輸入的不是整數時,會報錯# 異常# 即使Python程式的語法是正確的,在執行的時候也有可能發生錯誤,執行期檢測到的錯誤被稱為異常# 出現異常時,程式不會退出,還會正常執行# 處理異常的語法如下:# try:#     # 主程式碼塊#     pass# except 異常型別 as e:#     # 異常時,執行該塊#     pass# else:#     # 主程式碼塊執行完,執行該塊#     pass# finally:#     # 無論異常與否,最終執行該塊#     pass# 一個程式執行時可能會出現多種異常,每種型別的異常都可以根據型別捕捉到。# 如果使用ValueError進行捕捉,其他型別的異常就無法捕捉到,所以針對出現的異常進行分類處理,以便更好地處理異常# try:#     a = input("input a int param: ")#     num =  int(a)#     print(num)# except ValueError as e:#     print("丟擲異常")#     print(e)# 如果捕捉異常時不想指定異常,想直接捕捉所有型別的異常就使用Exception# try:#     a = input("input a int param: ")#     num = int(a)#     print(num)# except Exception as e:#     print("丟擲異常")# 異常的分類處理# 如果想同時使用Exception和單個型別異常捕捉,應該把單個型別異常的捕捉放到Exception的前面# try:#     x = int(input("input x:"))#     y = int(input("input y:"))#     print("x/y = ", x/y)# except ZeroDivisionError:  # 捕捉除0異常#     print("ZeroDivision")# except (TypeError, ValueError) as e:  # 捕捉多個異常#     print(e)# except:  # 捕捉其餘型別異常#     print("it's still wrong")# else:  # 沒有異常時執行#     print("it work well")# 列印異常資訊# 使用traceback模組捕獲並列印異常,trackback模組用來精確模仿Python直譯器的stack trace行為# 在程式中應該儘量使用這個模組,可以在控制檯更直觀地顯示異常# traceback.print_exc()可以直接列印當前的異常# import traceback# try:#     print(1/0)# except:#     traceback.print_exc()# 自定義異常# 如果想要程式碼觸發一個異常需要使用raise來丟擲自定義的異常# 在Python中所有異常的基類是Exception,所以異常處理的類需要繼承Exception# 錯誤處理的類中寫了一個特殊的類成員__str__,str是以兩個下劃線“__”開頭# 用此之後,建立的使用print列印建立的物件就會輸出__str__中返回值返回的內容class MyException(Exception):    def __init__(self, message):        self.message = message    def __str__(self):        return self.messagetry:    a = 6    b = 4    if a > b:        raise MyException("自定義異常")except MyException as err:    print("列印MyException異常", err)except Exception as err:    print("列印Exception異常", err)
# 自定義異常:# 如果想要程式碼觸發一個異常需要使用raise來丟擲自定義的異常# 在Python中所有異常的基類是Exception,所以異常處理的類需要繼承Exception# 錯誤處理的類中寫了一個特殊的類成員__str__,str是以兩個下劃線“__”開頭# 用此之後,建立的使用print列印建立的物件就會輸出__str__中返回值返回的內容class MyException(Exception):    def __init__(self, message):        self.message = message    def __str__(self):        return self.messagetry:    a = 10    b = 5    if a != b:        raise MyException("自定義異常")except MyException as err:    print("列印MyException異常", err)except Exception as err:    print("列印Exception異常", err)
# 列印異常資訊:# 使用traceback模組捕獲並列印異常,trackback模組用來精確模仿Python直譯器的stack trace行為# 在程式中應該儘量使用這個模組,可以在控制檯更直觀地顯示異常# traceback.print_exc()可以直接列印當前的異常 import traceback try:     print(1/0) except:     traceback.print_exc()
# 列印異常資訊:# 使用traceback模組捕獲並列印異常,trackback模組用來精確模仿Python直譯器的stack trace行為# 在程式中應該儘量使用這個模組,可以在控制檯更直觀地顯示異常# traceback.print_exc()可以直接列印當前的異常 import traceback try:     print(1/0) except:     traceback.print_exc()
96ad9ec01acdc0bc0d744b3947798493.png