Python錯(cuò)誤和異常處理

希望大家喜歡,點(diǎn)贊哦

Python錯(cuò)誤和異常處理概略

一、錯(cuò)誤和異常的概念

1.1 錯(cuò)誤:代碼運(yùn)行前的語法或者邏輯錯(cuò)誤

語法錯(cuò)誤:代碼不符合解釋器或者編譯器語法

邏輯錯(cuò)誤:不完整或者不合法輸入或者計(jì)算出現(xiàn)問題

1.2 異常:程序執(zhí)行過程中出現(xiàn)問題導(dǎo)致程序無法執(zhí)行

異常的分類:

  1. 程序遇到邏輯或算法錯(cuò)誤

  2. 運(yùn)行過程中計(jì)算機(jī)錯(cuò)誤:內(nèi)存不夠或者io錯(cuò)誤

異常的步驟:

  1. 異常產(chǎn)生,檢查到錯(cuò)誤且解釋器認(rèn)為是異常,拋出異常

  2. 異常處理,異常處理,截獲異常,系統(tǒng)忽略或者終止程序處理異常

二、常見的錯(cuò)誤

2.1 NameError

2.2 SyntaxError(語法錯(cuò)誤)

2.3 IOError(輸入輸出錯(cuò)誤)

2.4 ZeroDivisionError(除0錯(cuò)誤)

2.5 ValueError

三、異常處理

3.1 try_except及else使用

語法:

try:
    try_suite
# 第一種錯(cuò)誤
except Exception1 [e]:
    exception_block1
#第二種錯(cuò)誤
except Exception2 [e]:
    exception_block2
#第N種錯(cuò)誤
except ExceptionN [e]:
    exception_blockN
# else
else:
    none_exception

執(zhí)行過程:

  1. try來捕獲try_suite中的錯(cuò)誤,并且將錯(cuò)誤交給except處理
  2. except用來處理異常,如果異常和設(shè)置捕獲異常一致,使用exception_block處理異常

3.2 截獲異常:使用try_except即可

3.3 try_finaly使用

語法:

try:
    try_suite
finally:
    do_finally

執(zhí)行過程:

  1. 如果try語句沒有捕獲錯(cuò)誤,代碼執(zhí)行do_finally語句
  2. 如果try語句捕獲錯(cuò)誤,程序首先執(zhí)行do_finally語句,然后將捕獲到的錯(cuò)誤交給Python解釋器處理

規(guī)則:try_finally無論是否檢測到異常,都會(huì)執(zhí)行finally代碼
作用:為異常世界提供清理機(jī)制,用來關(guān)閉文件或者釋放系統(tǒng)資源

3.4 異常處理綜合使用

3.4.1 try-except-finally使用:

try:
    try_suite
except:
    do_except
finally:
    do_finally

執(zhí)行過程:

  1. 若try語句沒有捕獲異常,執(zhí)行完try代碼段后,執(zhí)行finally
  2. 若try捕獲異常,首先執(zhí)行except處理錯(cuò)誤,然后執(zhí)行finall

3.4.2 try-except-else-finally使用:

try:
    try_suite
except:
    do_except
else:
    do_else
finally:
    do_finally

執(zhí)行過程:

  1. 若try語句沒有捕獲異常,執(zhí)行完try代碼段后,執(zhí)行else代碼段,最后執(zhí)行finally
  2. 若try捕獲異常,首先執(zhí)行except處理錯(cuò)誤,然后執(zhí)行finall

3.5 with...as語句與上下文管理

3.5.1 with語句:

with context [as var]:
    with_suite
  1. with語句用來代替try-except_finall語句,使代碼更加簡潔;
  2. context表達(dá)式返回的是一個(gè)對象;
  3. var 用來保存context返回對象,單個(gè)返回值或者元祖
  4. with_suite 使用var變量來對context返回對象進(jìn)行操作

with語句應(yīng)用場景:
1.文件操作;
2.進(jìn)程線程之間互斥對象,例如互斥鎖
3.支持上下文的其他對象

3.5.2 上下文管理
with語句實(shí)質(zhì)上是上下文管理
1.上下文管理協(xié)議:包含方法enter()和exit(),支持該協(xié)議的對象要實(shí)現(xiàn)這兩個(gè)方法
2.上下文管理器:定義執(zhí)行with語句是要建立的運(yùn)行時(shí)上下文,負(fù)責(zé)執(zhí)行with】語句塊上下文的進(jìn)入與退出操作
3.進(jìn)入上下文管理器:調(diào)用管理器enter()方法,如果設(shè)置as var 語句,var變量接受enter()方法返回值
4.退出上下文管理器:調(diào)用管理器exit()方法

四、raise和assert語句

4.1 raise

raise語句用于主動(dòng)拋出異常
語法:raise [exception[,args]]

exception: 異常類
args:描述異常信息的元組

4.2 assert

斷言語句:assert語句用于檢測表達(dá)式是否為真,如果為假,引發(fā)AssertionError錯(cuò)誤

語法:assert expressionion [,args]
expression:表達(dá)式
args:判斷條件的描述信息

五、標(biāo)準(zhǔn)異常和自定義異常

標(biāo)準(zhǔn)異常:Python內(nèi)建異常

標(biāo)準(zhǔn)異常的分類:

BaseException:所有異常基類

Keyboardinterrupt:用戶中斷(ctrl-c)

Exception:常見錯(cuò)誤的基類(SyntaxError,NameError,IOError,ImprotError ...)

SystemExit:Python解釋器退出

自定義異常:

1.用戶自定義,用于描述Python中沒有涉及的異常
2.自定義異常繼承Exception類
3.自定義異常只能主動(dòng)觸發(fā)

自定義異常示例:
自定義異常:

class FileError(IOError):
    pass

產(chǎn)生自定義異常:assert FileError,"file Error"

希望大家喜歡,點(diǎn)贊哦

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,835評論 6 534
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 98,676評論 3 419
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,730評論 0 380
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,118評論 1 314
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 71,873評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 55,266評論 1 324
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,330評論 3 443
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 42,482評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 49,036評論 1 335
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 40,846評論 3 356
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 43,025評論 1 371
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,575評論 5 362
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 44,279評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,684評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,953評論 1 289
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 51,751評論 3 394
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 48,016評論 2 375

推薦閱讀更多精彩內(nèi)容

  • 一、簡介 Python最強(qiáng)大的結(jié)構(gòu)之一就是它的異常處理能力,所有的標(biāo)準(zhǔn)異常都使用類來實(shí)現(xiàn),都是基類Exceptio...
    隨風(fēng)化作雨閱讀 3,083評論 0 1
  • Python異常處理 異常概念: 異常:就是不正常的情況,程序開發(fā)過程中錯(cuò)誤和BUG都是補(bǔ)充正常的情況 異常發(fā)生的...
    youngkun閱讀 930評論 0 4
  • 第十一章 使用加載項(xiàng)自定義ArcGIS界面 ||| 附錄A 自動(dòng)執(zhí)行Python腳本 我們將在本章介紹以下案例: ...
    muyan閱讀 9,246評論 0 2
  • 1.什么是異常? 異常即是一個(gè)事件,該事件會(huì)在程序執(zhí)行過程中發(fā)生,影響了程序的正常執(zhí)行。一般情況下,Python無...
    歲月神偷_bde8閱讀 286評論 0 0
  • 姓名:華林 公司:寧波大發(fā)化纖有限公司 【日精進(jìn)打卡第39天】 【知~學(xué)習(xí)】 《六項(xiàng)精進(jìn)》1遍 《大學(xué)》1遍 《...
    hualincool閱讀 143評論 0 0