1、什么是異常
??異常即“與正常情況不同”,何為正常?正常便是解釋器在解釋代碼時(shí),我們所編寫的代碼符合解釋器定義的規(guī)則,即為正常,當(dāng)解釋器發(fā)現(xiàn)某段代碼符合語法但有可能出現(xiàn)不正常的情況時(shí),解釋器便會(huì)發(fā)出一個(gè)事件,中斷程序的正常執(zhí)行。這個(gè)中斷的信號(hào)便是一個(gè)異常信號(hào)。所以,總體解釋就是,在解釋器發(fā)現(xiàn)到程序出現(xiàn)錯(cuò)誤的時(shí)候,則會(huì)產(chǎn)生一個(gè)異常,若程序沒有處理,則會(huì)將該異常拋出,程序的運(yùn)行也隨之終止。我們可以在一個(gè)空白的.py文件中寫一句int(“m”),運(yùn)行后結(jié)果如下。
在這里插入圖片描述
這一串字體為解釋器拋出的一系列錯(cuò)誤信息,因?yàn)閕nt()傳入的參數(shù)只支持?jǐn)?shù)字字符串和數(shù)字,顯然‘m’不屬于數(shù)字字符串傳入?yún)?shù)錯(cuò)誤所以解釋器報(bào)“valueError”的錯(cuò)誤。
2、錯(cuò)誤和異常的區(qū)別
對于python錯(cuò)誤的概述:它指的是代碼運(yùn)行前的語法或邏輯錯(cuò)誤。拿常規(guī)語法錯(cuò)誤來說,當(dāng)我們編寫的代碼過不了語法檢測時(shí),則會(huì)直接出現(xiàn)語法錯(cuò)誤,必須在程序執(zhí)行前就改正,不然寫的代碼將毫無意義,代碼是不運(yùn)行的,也無法捕獲得到。舉個(gè)例子,在.py文件輸入ifa=1print(“hello”),輸出結(jié)果如下:
Traceback(mostrecentcalllast):
File"E:/Test_code/test.py",line1
ifa=1print("hello")
^SyntaxError:invalidsyntax
函數(shù)print()被檢查到有錯(cuò)誤,是它前面缺少了一個(gè)冒號(hào):,所以解析器會(huì)復(fù)現(xiàn)句法錯(cuò)誤的那行代碼,并用一個(gè)小“箭頭”指向行里檢測到的第一個(gè)錯(cuò)誤,所以我們可以直接找到對應(yīng)的位置修改其語法。當(dāng)然除了語法錯(cuò)誤,還有很多程序奔潰的錯(cuò)誤,如內(nèi)存溢出等,這類錯(cuò)誤往往比較隱蔽。
相比于錯(cuò)誤,python異常主要在程序執(zhí)行過程中,程序遇見邏輯或算法問題,這時(shí)解釋器如果可以處理,則沒問題,如果處理不了,便直接終止程序,便將異常拋出,如第1小點(diǎn)的int(‘m’)例子,因?yàn)閰?shù)傳入錯(cuò)誤導(dǎo)致程序出錯(cuò)。這種因?yàn)檫壿嫯a(chǎn)生的異常五花八門,還好我們的解釋器都內(nèi)置好了各種異常的種類,讓我們知道是什么樣的異常出現(xiàn),好讓我們“對癥下藥”。
這里注意一點(diǎn),上述語法錯(cuò)誤是可識(shí)別的錯(cuò)誤,所以解釋器也會(huì)默認(rèn)拋出一個(gè)SyntaxError異常信息反饋給程序員。所以本質(zhì)上大部分錯(cuò)誤都是可被輸出打印的,只是因?yàn)殄e(cuò)誤代碼不運(yùn)行,也就沒法處理,所以捕獲錯(cuò)誤的異常信息就變得沒意義。
以上內(nèi)容為大家介紹了對python異常的理解,希望對大家有所幫助,如果想要了解更多Python相關(guān)知識(shí),請關(guān)注IT培訓(xùn)機(jī)構(gòu):千鋒教育。http://www.kei0345678.cn/