最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python基礎異常處理梳理總結(jié)

 更新時間:2022年06月30日 11:45:21   作者:薛定諤的貓ovo  
這篇文章主要介紹了Python基礎異常處理梳理總結(jié),文章圍繞主題展開詳細的內(nèi)容介紹,具有一定的參考價值,感興趣的小伙伴可以參考一下

前言

我們是人,也會經(jīng)常犯錯,程序員也不例外,就算是經(jīng)驗豐富的碼農(nóng),也不能保證寫的代碼百分之百沒有任何問題。另外,作為一個合格的程序員,在編程時要意識到一點,那就是永遠不要相信你的用戶,所以要多方面考慮,這樣寫出來的程序才會更加安全穩(wěn)定。

那么既然程序總會出問題,那我們就需要用適當?shù)姆椒ㄈソ鉀Q問題。程序出現(xiàn)邏輯錯誤或者用戶輸入不合法都會引發(fā)異常,但這些異常并不是致命的,不會導致程序崩潰,可以利用Python提供的異常處理機制,在異常出現(xiàn)的時候及時捕獲,并從內(nèi)部自我消化掉。

那么什么是異常呢?舉個例子:

這里當然假設用戶的輸入是正確的,但是只要用戶輸入一個不存在的文件名,那么上面的代碼是不堪一擊的:

上面的例子就拋出了一個FileNotFoundError異常,那么Python還可能拋出哪些異常呢,在下面給大家介紹一下常見的異常,這樣以后遇到這樣的異常時就不會感到陌生了。

一、常見的Python異常

AssertionError斷言語句(assert)失敗

在以前的分支和循環(huán)章節(jié)中講過斷言語句(assert),當assert這個關(guān)鍵字后邊的條件為假的時候,程序?qū)⒔K止并拋出AssertionError異常。assert語句一般是在測試程序的時候用于在代碼中置入檢查點:

AttributeError:嘗試訪問未知的對象屬性

當試圖訪問的對象屬性不存在時拋出的異常:

IndexError:索引超出序列的范圍

在使用序列的時候就常常會遇到IndexError異常,原因是索引超出序列范圍的內(nèi)容

KeyError:字典查找一個不存在的關(guān)鍵字

試圖在字典中查找一個不存在的關(guān)鍵字時就會引發(fā)KeyError異常,因此建議使用dict.get()方法

NameError:嘗試訪問一個不存在的變量

嘗試訪問一個不存在的變量時,Python會拋出NameError異常:

OSError:操作系統(tǒng)產(chǎn)生的異常

OSError顧名思義就是操作系統(tǒng)產(chǎn)生的異常,像打開一個不存在的文件會引發(fā)FileNotFoundError,而這個FileNotFoundError就是OSError的子類。上面的例子已經(jīng)演示過,這里就不再贅述了。

SyntaxError:Python的語法錯誤

如果遇到SyntaxError是Python的語法錯誤,這時Python的代碼并不能繼續(xù)執(zhí)行,你應該找到并改正錯誤:

TypeError:不同類型間的無效操作

有些類型不同是不能相互進行計算的,否則會拋出TypeError異常:

ZeroDivisionError:除數(shù)為零

我們都知道除數(shù)不能為零,所以除以零就會引發(fā)ZeroDivisionError異常:

二、try-except語句

try-except語句格式如下:

try:
  檢測范圍
except Exception[as reason]:
  出現(xiàn)異常(Exception)后的處理代碼

try-except語句用于檢測和處理異常,舉個例子來說明這一切是如何工作的。

前面我們也介紹過,當要打開的文件不存在時,就會引發(fā)FileNotFoundError,顯然用戶的體驗不好,因此我們可以這樣修改:

其執(zhí)行結(jié)果是:

上面的例子由于使用了大家習慣的語言來描述錯誤信息,用戶體驗會好很多。

但是從程序員的角度來看,導致OSError異常的原因有很多(例如FileNotFoundError、FileExistsError、PermissionError等),所以可能會更在意錯誤的具體內(nèi)容,這里可以使用as把具體的錯誤消息打印出來

其執(zhí)行結(jié)果為:

針對不同異常設置多個except

一個try語句可以和多個except語句搭配,分別對感興趣的異常進行檢測處理:

三、對多個異常統(tǒng)一處理

except后面還可以跟多個異常,然后對這些異常進行統(tǒng)一的處理:

四、捕獲所有異常

如果你無法確定要對哪一類異常進行處理,只是希望在try語句塊里一旦出現(xiàn)任何異常,可以給用戶一個“看得懂”的提醒,那么可以這么做:

五、try-finally語句

看下面這個例子,如果"a.txt"確實存在,open()函數(shù)可以正常返回文件對象,但異常卻發(fā)生在打開文件后的sum = 1 + ‘1’語句上,此時Python將直接跳到except語句,也就是說,文件打開了,但并沒有執(zhí)行關(guān)閉文件的命令:

為了實現(xiàn)這種“就算出現(xiàn)異常,但也不得不執(zhí)行的收尾工作(比如在程序崩潰前保存用戶文檔)”,引入了finally來擴展try:

如果try語句塊中沒有出現(xiàn)任何運行時錯誤,會跳過except語句執(zhí)行finally語句塊的內(nèi)容。
如果出現(xiàn)異常,則會先執(zhí)行except語句塊的內(nèi)容再執(zhí)行finally語句塊的內(nèi)容。
總之,finally語句塊中的內(nèi)容就是確保無論如何都將被執(zhí)行的內(nèi)容。

六、raise語句

有些讀者可能會思考,我的代碼能不能自己拋出一個異常呢?答案是可以的,你可以使用raise語句拋出一個異常

拋出的異常還可以帶參數(shù),表示異常的解釋

七、豐富的else語句

對于絕大多數(shù)編程語言來說,else語句都只能跟if語句搭配,但是在Python里,else語句的功能更加豐富。在Python中,else語句不僅能跟if語句搭,跟循環(huán)語句(for語句或while語句)搭配,還能跟剛才所講的異常處理進行搭配。

1、典型的if-else語句

if 條件:
  條件為真執(zhí)行
else:
  條件為假執(zhí)行

2、else與for和while循環(huán)語句搭配

舉個例子:

這段程序主要是求用戶輸入的數(shù)的最大約數(shù),如果是素數(shù)的話會提醒這是一個素數(shù)。
使用暴力的方法一個個嘗試(num%count==0),如果符合條件則打印出最大的約數(shù),并break,同時不會執(zhí)行else語句塊的內(nèi)容了。但如果一直沒有遇到合適的條件,則會執(zhí)行else語句塊內(nèi)容。

for語句的用法和while語句一樣,這里便不再贅述了。

3、else語句與異常處理進行搭配

else語句還能和剛剛講的異常處理進行搭配,只要try語句塊里沒有出現(xiàn)任何異常,那么就會執(zhí)行else語句塊里的內(nèi)容

舉個例子:

八、簡潔的with語句

有些讀者覺得打開文件又要關(guān)閉文件,還要關(guān)注異常處理有點麻煩,所以Python提供了一個with語句,利用這個語句抽象出文件操作中頻繁使用的try/except/finally相關(guān)的細節(jié),對文件操作使用with語句,將大大減少代碼量。

舉個例子:

使用with語句,可以改成這樣:

有了with語句,就再也不用擔心忘記關(guān)閉文件了。

到此這篇關(guān)于Python基礎異常處理梳理總結(jié)的文章就介紹到這了,更多相關(guān)Python異常處理內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 解決python報錯MemoryError的問題

    解決python報錯MemoryError的問題

    今天小編就為大家分享一篇解決python報錯MemoryError的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-06-06
  • Python調(diào)整圖像hue值結(jié)合ImageEnhance庫以實現(xiàn)色調(diào)增強

    Python調(diào)整圖像hue值結(jié)合ImageEnhance庫以實現(xiàn)色調(diào)增強

    這篇文章主要介紹了Python調(diào)整圖像hue值結(jié)合ImageEnhance庫以實現(xiàn)色調(diào)增強,PIL庫中的ImageEnhance類可用于圖像增強,可以調(diào)節(jié)圖像的亮度、對比度、色度和銳度,通過RGB到HSV的變換加調(diào)整可以對圖像的色調(diào)進行調(diào)整,需要的朋友可以參考下
    2023-09-09
  • Python 求向量的余弦值操作

    Python 求向量的余弦值操作

    這篇文章主要介紹了Python 求向量的余弦值操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-03-03
  • python中用ggplot繪制畫圖實例講解

    python中用ggplot繪制畫圖實例講解

    在本篇文章里小編給大家整理的是一篇關(guān)于python中用ggplot繪制畫圖實例講解內(nèi)容,有興趣的朋友們可以學習參考下。
    2021-01-01
  • django中ORM模型常用的字段的使用方法

    django中ORM模型常用的字段的使用方法

    這篇文章主要介紹了django中ORM模型常用的字段的使用方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-03-03
  • django filters實現(xiàn)數(shù)據(jù)過濾的示例代碼

    django filters實現(xiàn)數(shù)據(jù)過濾的示例代碼

    這篇文章主要介紹了django filters實現(xiàn)數(shù)據(jù)過濾的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-05-05
  • python中fastapi設置查詢參數(shù)可選或必選

    python中fastapi設置查詢參數(shù)可選或必選

    這篇文章主要介紹了python中fastapi設置查詢參數(shù)可選或必選,文圍繞主題展開詳細的內(nèi)容介紹,具有一定的參考價值需要的小伙伴可以參考一下
    2022-06-06
  • Python正則表達式如何匹配特殊字符串

    Python正則表達式如何匹配特殊字符串

    文章主要介紹了如何使用Python正則表達式匹配和提取特定格式的字符串,通過示例,展示了如何從一串字符串中提取符合特定模式的子字符串,并輸出結(jié)果,文章還提到了一些正則表達式的應用經(jīng)驗,并鼓勵讀者參考和使用腳本之家提供的資源
    2025-02-02
  • Python循環(huán)語句中else的用法總結(jié)

    Python循環(huán)語句中else的用法總結(jié)

    這篇文章給大家整理了關(guān)于Python中循環(huán)語句中else的用法,包括常規(guī)的 if else 用法、if else 快捷用法、與 for 關(guān)鍵字一起用、與 while 關(guān)鍵字一起用以及與 try except 一起用的用法總結(jié),有需要的朋友們可以參考借鑒。
    2016-09-09
  • python pyheatmap包繪制熱力圖

    python pyheatmap包繪制熱力圖

    這篇文章主要為大家詳細介紹了python pyheatmap包繪制熱力圖,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-11-11

最新評論

遵义市| 澄城县| 图们市| 交口县| 怀远县| 远安县| 元氏县| 禄丰县| 清丰县| 灵山县| 梓潼县| 文成县| 井陉县| 平陆县| 吉木乃县| 乌审旗| 且末县| 报价| 个旧市| 信丰县| 紫阳县| 雷山县| 南通市| 监利县| 甘孜县| 房产| 赤壁市| 广汉市| 乐东| 宜宾市| 航空| 阿鲁科尔沁旗| 河北省| 盐津县| 淳化县| 增城市| 建始县| 岳西县| 隆昌县| 镇江市| 郁南县|