Python錯誤的處理方法
異常的捕獲與處理
什么是錯誤
簡而言之:還沒運行,在語法解析的時候,就發(fā)現(xiàn)語法存在問題,這個時候就是錯誤。
什么是異常
簡而言之:代碼寫好之后,無明顯語法錯誤(這個時候,編輯器不知道有錯,語法解析時也不知道有錯),但是運行的時候,會發(fā)生錯誤,這個時候稱之為異常。
什么是警告
import warningsdef fxn(): warnings.warn('deprecated', DeprecationWarning)
異常怎么處理
異常的處理形式如下:
try: 你要做的可能會發(fā)生異常的事except 可能會發(fā)生的異常: 發(fā)生異常之后要做的事except 可能會發(fā)生的異常2: 發(fā)生異常之后要做的事2finally: 最終要做的事情
比如下面的代碼:
try: print(10/0)except ZeroDivisionError: print('除數(shù)不能為0')
這個時候再次運行,就不會再出現(xiàn)異常
在平時的開發(fā)中,也會使用預定義清理的操作,來避免因為異常而導致程序奔潰,比如在進行IO操作的時候,可以使用:
with open('myfile.txt') as f: for line in f: print(line, end='')
這樣一旦運行時發(fā)生異常,程序會自動幫你關閉文件,避免整個程序奔潰
自定義異常與異常的拋出
雖然python中提供了非常多的內(nèi)置異常類,但是,在平時開發(fā)中,針對特定的業(yè)務,可能需要自定義異常,此時怎么辦?
通過自定義繼承Exception類的類,可以實現(xiàn)異常的自定義
class MyException(Exception): def __init__(self, parameter): err = ’非法入?yún)0},分母不能為0’.format(parameter) Exception.__init__(self, err) self.parameter = parameter
當我們代碼中碰到某種特殊業(yè)務情況,需要向調(diào)用方拋出自定義異常,可以使用 raise 關鍵字
from chapter12.my_exception import MyExceptiondef my_fun(x): if x == 0: raise MyException(x) return 12/xprint(my_fun(-12))
我們在捕獲異常之后,也可以直接將異常拋出,此時直接使用 raise 關鍵字即可
def my_func(): try: print(10 / 0) except ZeroDivisionError: print('除數(shù)不能為0') # 此處直接將捕獲的異常拋出 raise
單元測試
什么是單元測試
單元測試(英語:Unit Testing)又稱為模塊測試,是針對程序模塊(軟件設計的最小單位)來進行正確性檢驗的測試工作。程序單元是應用的最小可測試部件。在過程化編程中,一個單元就是單個程序、函數(shù)、過程等;對于面向?qū)ο缶幊蹋钚卧褪欠椒ǎɑ悾ǔ悾⒊橄箢悺⒒蛘吲缮悾ㄗ宇悾┲械姆椒ā? 簡而言之:就是寫一段代碼,用來驗證另一段代碼在特定情況下的正確性單元測試的好處與“壞處”
好處:減少bug、提高代碼質(zhì)量、可以放心重構(gòu)(在未來修改實現(xiàn)的時候,可以保證代碼的行為仍舊是正確的) '壞處':占用開發(fā)時間,尤其是在起步階段在python中,如何編寫單元測試
1、新建python文件,編寫具體業(yè)務代碼
class MyTest():def my_add(self, a, b):return a + b
2、右鍵類名,選擇Go TO ==》test,或者直接 ctrl+shift +t

3、填寫好相應的模塊名及測試類名,點擊ok,此時pycharm會幫我們自動創(chuàng)建測試模塊及類

4、編寫測試代碼,并執(zhí)行單元測試
import unittestfrom unittest import TestCasefrom test import MyTestclass TestMyTest(TestCase):def test_add(self): s= MyTest() self.assertEqual(s.my_add(1,5),6)if __name__ == '__main__':unittest.main()
以上就是Python錯誤的處理方法的詳細內(nèi)容,更多關于Python錯誤處理的資料請關注好吧啦網(wǎng)其它相關文章!
相關文章:

網(wǎng)公網(wǎng)安備