日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

关于Python异常处理,你需要了解的知识点

發布時間:2024/9/15 python 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 关于Python异常处理,你需要了解的知识点 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

什么是異常?

當Python檢測到一個錯誤時,解釋器就無法繼續執行了,并且給出一個錯誤提示。比如寫入文件的時候,磁盤滿了,寫不進去了,或者從網絡抓取數據,網絡突然中斷。這時候,就需要捕獲處理它,否則程序會終止執行。

異常處理

使用try/except/finally語句進行捕獲操作,并告訴Python發生異常時如何處理。

首先,檢測try語句塊中的錯誤,except語句捕獲異常信息并處理。如果在try子句執行時沒有發生異常,Python將執行else語句后的語句,然后控制流通過整個try語句。

如果在try后的語句里發生了異常,卻沒有匹配的except子句,異常將被遞交到上層的try,或者到程序的最上層,并打印缺省的出錯信息。

語法格式

try:# 可能觸發異常的語句塊 except: # 后面跟一個錯誤類型,當代碼發生錯誤且錯誤類型符合的時候,就會執行except中的代碼,不寫具體錯誤類型,表示接收任何類型的異常# 這里執行異常處理的相關代碼,打印輸出等 else:# 如果沒有異常則執行else中的代碼 finally:# 不管代碼是否異常,都會執行,一般是資源的關閉和釋放

excep 異常/錯誤 as 別名,使用別名接收異常對象的錯誤信息。

如何捕獲多個異常?

1.寫出多行except 異常/錯誤,指定捕獲多個不同類型的異常。2.使用?except (異常1,異常2..),使用元組,在一行中捕獲多個不同類型的異常。
異常捕獲示例代碼:

try:print(10/0) except NameError:print('出現 NameError 異常') except ZeroDivisionError:print('出現 ZeroDivisionError 異常') except IndexError:print('出現 IndexError 異常') except Exception as e :print('未知異常',e,type(e)) finally :print('無論是否出現異常,該子句都會執行')

拋出異常

我們使用raise語句觸發自定義異常。

語法格式:

raise 異常類名(附加異常信息) 示例代碼: s = "asdfghjklqwe" try:if len(s) > 10:raise Exception("超過10個字符") except Exception as err:print(err)

自定義異常

系統的自帶的異常只要觸發就會自動拋出,有時候,用戶自己決定什么時候拋出,并且給異常加上一些附加信息,這時候就可以使用自定義異常。

示例代碼:

# 自定義異常類,創建一個類繼承Exception class MyError(Exception):pass def add(a, b):# a小于0,拋出異常if a < 0:raise MyError('自定義的異常')return a + bprint(add(-1, 5))

異常定義好之后,與內置類的用法一樣,在需要的時候raise出來就可以了。

常見的使用異常的場景

?網絡請求相關,比如網絡超時、連接異常等。?資源訪問相關,比如文件的權限問題、文件的路徑、文件是否存在等。?代碼邏輯相關,比如越界訪問、KeyError 等。

Python標準異常

異常名稱

描述



BaseException

所有異常的基類

SystemExit

解釋器請求退出

KeyboardInterrupt

用戶中斷執行(通常是輸入^C)

Exception

常規錯誤的基類

StopIteration

迭代器沒有更多的值

GeneratorExit

生成器(generator)發生異常來通知退出

StandardError

所有的內建標準異常的基類

ArithmeticError

所有數值計算錯誤的基類

FloatingPointError

浮點計算錯誤

OverflowError

數值運算超出最大限制

ZeroDivisionError

除(或取模)零 ?(所有數據類型)

AssertionError

斷言語句失敗

AttributeError

對象沒有這個屬性

EOFError

沒有內建輸入,到達EOF 標記

EnvironmentError

操作系統錯誤的基類

IOError

輸入/輸出操作失敗

OSError

操作系統錯誤

WindowsError

系統調用失敗

ImportError

導入模塊/對象失敗

LookupError

無效數據查詢的基類

IndexError

序列中沒有此索引(index)

KeyError

映射中沒有這個鍵

MemoryError

內存溢出錯誤(對于Python 解釋器不是致命的)

NameError

未聲明/初始化對象 (沒有屬性)

UnboundLocalError

訪問未初始化的本地變量

ReferenceError

弱引用(Weak reference)試圖訪問已經垃圾回收了的對象

RuntimeError

一般的運行時錯誤

NotImplementedError

尚未實現的方法

SyntaxError

Python 語法錯誤

IndentationError

縮進錯誤

TabError

Tab 和空格混用

SystemError

一般的解釋器系統錯誤

TypeError

對類型無效的操作

ValueError

傳入無效的參數

UnicodeError

Unicode 相關的錯誤

UnicodeDecodeError

Unicode 解碼時的錯誤

UnicodeEncodeError

Unicode 編碼時錯誤

UnicodeTranslateError

Unicode 轉換時錯誤

Warning

警告的基類

DeprecationWarning

關于被棄用的特征的警告

FutureWarning

關于構造將來語義會有改變的警告

OverflowWarning

舊的關于自動提升為長整型(long)的警告

PendingDeprecationWarning

關于特性將會被廢棄的警告

RuntimeWarning

可疑的運行時行為(runtime behavior)的警告

SyntaxWarning

可疑的語法的警告

UserWarning

用戶代碼生成的警告

推薦閱讀

8 個 Python 高效數據分析的技巧

用Python求解線性規劃問題

最全的 pip 使用指南,50% 你可能沒用過。

總結

以上是生活随笔為你收集整理的关于Python异常处理,你需要了解的知识点的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。