Python錯誤的處理方法
阿新 • • 發佈:2020-06-24
異常的捕獲與處理
什麼是錯誤
簡而言之:還沒執行,在語法解析的時候,就發現語法存在問題,這個時候就是錯誤。
什麼是異常
簡而言之:程式碼寫好之後,無明顯語法錯誤(這個時候,編輯器不知道有錯,語法解析時也不知道有錯),但是執行的時候,會發生錯誤,這個時候稱之為異常。
什麼是警告
import warnings def fxn(): warnings.warn("deprecated",DeprecationWarning)
異常怎麼處理
異常的處理形式如下:
try: 你要做的可能會發生異常的事 except 可能會發生的異常: 發生異常之後要做的事 except 可能會發生的異常2: 發生異常之後要做的事2 finally: 最終要做的事情
比如下面的程式碼:
try: print(10/0) except ZeroDivisionError: print("除數不能為0")
這個時候再次執行,就不會再出現異常
在平時的開發中,也會使用預定義清理的操作,來避免因為異常而導致程式奔潰,比如在進行IO操作的時候,可以使用:
with open("myfile.txt") as f: for line in f: print(line,end="")
這樣一旦執行時發生異常,程式會自動幫你關閉檔案,避免整個程式奔潰
自定義異常與異常的丟擲
雖然python中提供了非常多的內建異常類,但是,在平時開發中,針對特定的業務,可能需要自定義異常,此時怎麼辦?
通過自定義繼承Exception類的類,可以實現異常的自定義
class MyException(Exception): def __init__(self,parameter): err = '非法入參{0},分母不能為0'.format(parameter) Exception.__init__(self,err) self.parameter = parameter
當我們程式碼中碰到某種特殊業務情況,需要向呼叫方丟擲自定義異常,可以使用 raise 關鍵字
from chapter12.my_exception import MyException def my_fun(x): if x == 0: raise MyException(x) return 12/x print(my_fun(-12))
我們在捕獲異常之後,也可以直接將異常丟擲,此時直接使用 raise 關鍵字即可
def my_func(): try: print(10 / 0) except ZeroDivisionError: print("除數不能為0") # 此處直接將捕獲的異常丟擲 raise
單元測試
什麼是單元測試
- 單元測試(英語:Unit Testing)又稱為模組測試,是針對程式模組(軟體設計的最小單位)來進行正確性檢驗的測試工作。程式單元是應用的最小可測試部件。在過程化程式設計中,一個單元就是單個程式、函式、過程等;對於面向物件程式設計,最小單元就是方法,包括基類(超類)、抽象類、或者派生類(子類)中的方法。
- 簡而言之:就是寫一段程式碼,用來驗證另一段程式碼在特定情況下的正確性
單元測試的好處與“壞處”
- 好處:減少bug、提高程式碼質量、可以放心重構(在未來修改實現的時候,可以保證程式碼的行為仍舊是正確的)
- "壞處":佔用開發時間,尤其是在起步階段
在python中,如何編寫單元測試
1、新建python檔案,編寫具體業務程式碼
class MyTest(): def my_add(self,a,b): return a + b
2、右鍵類名,選擇Go TO ==》test,或者直接 ctrl+shift +t
3、填寫好相應的模組名及測試類名,點選ok,此時pycharm會幫我們自動建立測試模組及類
4、編寫測試程式碼,並執行單元測試
import unittest from unittest import TestCase from test import MyTest class TestMyTest(TestCase): def test_add(self): s= MyTest() self.assertEqual(s.my_add(1,5),6) if __name__ == "__main__": unittest.main()
以上就是Python錯誤的處理方法的詳細內容,更多關於Python錯誤處理的資料請關注我們其它相關文章!