在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Python中有哪些常見(jiàn)的錯(cuò)誤和異常

python爬蟲(chóng)知識(shí)分享 ? 來(lái)源:python爬蟲(chóng)知識(shí)分享 ? 作者:python爬蟲(chóng)知識(shí)分享 ? 2022-03-04 16:58 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

python常見(jiàn)異常類(lèi)型

在程序運(yùn)行過(guò)程中,總會(huì)遇到各種各樣的問(wèn)題和錯(cuò)誤。

有些錯(cuò)誤是我們編寫(xiě)代碼時(shí)自己造成的,比如語(yǔ)法錯(cuò)誤、調(diào)用錯(cuò)誤,甚至邏輯錯(cuò)誤。下面這個(gè)例子,在輸入 if 后輸入回車(chē)了,沒(méi)有按照 Python 的語(yǔ)法規(guī)則來(lái),所以直接拋出了語(yǔ)法錯(cuò)誤。

>>> if
  File "", line 1
    if
     ^
SyntaxError: invalid syntax

還有一些錯(cuò)誤,則是不可預(yù)料的錯(cuò)誤,但是完全有可能發(fā)生的,比如文件不存在、磁盤(pán)空間不足、網(wǎng)絡(luò)堵塞、系統(tǒng)錯(cuò)誤等等。下面這個(gè)例子,使用 open 函數(shù)打開(kāi) demo.txt 文件,可是在當(dāng)前目錄下并沒(méi)有這個(gè)文件,所以一定會(huì)打開(kāi)失敗,拋出了IOError。

>>> fp = open('demo.txt')
Traceback (most recent call last):
  File "", line 1, in 
IOError: [Errno 2] No such file or directory: 'demo.txt'

這些導(dǎo)致程序在運(yùn)行過(guò)程中出現(xiàn)異常中斷和退出的錯(cuò)誤,我們統(tǒng)稱(chēng)為異常。正常情況下,異常都不會(huì)被程序處理,而是以錯(cuò)誤信息的形式展現(xiàn)出來(lái)。

異常有很多種類(lèi)型,Python內(nèi)置了幾十種常見(jiàn)的異常,就在builtins模塊內(nèi),它們無(wú)需特別導(dǎo)入,就可以直接使用。需要注意的是,所有的異常都是異常類(lèi),首字母是大寫(xiě)的!

在發(fā)生異常的時(shí)候,Python會(huì)打印出異常信息,信息的前面部分顯示了異常發(fā)生的上下文環(huán)境,并以調(diào)用棧的形式顯示具體信息。異常類(lèi)型作為信息的一部分也會(huì)被打印出來(lái),例如ZeroDivisionError,TypeError。

>>> 1/0
Traceback (most recent call last):
  File "", line 1, in 
ZeroDivisionError: integer division or modulo by zero
>>>
>>>
>>> 10 + "1"
Traceback (most recent call last):
  File "", line 1, in 
TypeError: unsupported operand type(s) for +: 'int' and 'str'

正常情況下,我們都不需要去記住 Python 到底內(nèi)置了哪些錯(cuò)誤和異常類(lèi)型,除非你需要去捕獲它,關(guān)于捕獲的內(nèi)容,我會(huì)放在下一節(jié)。這一節(jié)先來(lái)認(rèn)識(shí)一下 Python 中有哪些常見(jiàn)的錯(cuò)誤和異常,對(duì)于新手,下面的內(nèi)容大概過(guò)一下就好,不用深究,因?yàn)檫@些在你以后的編碼中都會(huì)遇到的。

1.SyntaxError

SyntaxError,是語(yǔ)法錯(cuò)誤,可能是新手在學(xué)習(xí) Python 時(shí)最容易遇到的錯(cuò)誤

>>> while True print('Hello world')
  File "", line 1
    while True print('Hello world')
                   ^
SyntaxError: invalid syntax

解析器會(huì)輸出出現(xiàn)語(yǔ)法錯(cuò)誤的那一行,并顯示一個(gè)“箭頭”,指向這行里面檢測(cè)到的第一個(gè)錯(cuò)誤。 錯(cuò)誤是由箭頭指示的位置 上面 的 token 引起的(或者至少是在這里被檢測(cè)出的):在示例中,在 print()這個(gè)函數(shù)中檢測(cè)到了錯(cuò)誤,因?yàn)樵谒懊嫔倭藗€(gè)冒號(hào) (':') 。文件名和行號(hào)也會(huì)被輸出,以便輸入來(lái)自腳本文件時(shí)你能知道去哪檢查。

2、TypeError

TypeError,是類(lèi)型錯(cuò)誤,也就是說(shuō)將某個(gè)操作或功能應(yīng)用于不合適類(lèi)型的對(duì)象時(shí)引發(fā),比如整型與字符型進(jìn)行加減法

>>> a = 10
>>> b = "1"
>>>
>>> a-b
Traceback (most recent call last):
  File "", line 1, in 
TypeError: unsupported operand type(s) for -: 'int' and 'str'

3、IndexError

IndexError,是指索引出現(xiàn)了錯(cuò)誤,比如最常見(jiàn)下標(biāo)索引超出了序列邊界

>>> alist = [0,1,2]
>>> alist[5]
Traceback (most recent call last):
  File "", line 1, in 
IndexError: list index out of range

4、KeyError

KeyError是關(guān)鍵字錯(cuò)誤,這個(gè)異常主要發(fā)生在字典中,比如當(dāng)用戶試圖訪問(wèn)一個(gè)字典中不存在的鍵時(shí)會(huì)被引發(fā)。

>>> profile = {"name": "王炳明"}
>>> profile["age"]
Traceback (most recent call last):
  File "", line 1, in 
KeyError: 'age'

5、ValueError

ValueError為值錯(cuò)誤,當(dāng)用戶傳入一個(gè)調(diào)用者不期望的值時(shí)會(huì)引發(fā),即使這個(gè)值的類(lèi)型是正確的,比如想獲取一個(gè)列表中某個(gè)不存在值的索引。

>>> int("1")
1
>>> int("a")
Traceback (most recent call last):
  File "", line 1, in 
ValueError: invalid literal for int() with base 10: 'a'

6、AttributeError

AttributeError是屬性錯(cuò)誤,當(dāng)用戶試圖訪問(wèn)一個(gè)對(duì)象不存在的屬性時(shí)會(huì)引發(fā)。

比如字典有g(shù)et方法,而列表卻沒(méi)有,所以對(duì)一個(gè)列表對(duì)象調(diào)用該方法就會(huì)引發(fā)該異常。

>>> alist = [0,1,2]
>>> alist.get(0)
Traceback (most recent call last):
  File "", line 1, in 
AttributeError: 'list' object has no attribute 'get'

7、NameError

NameError是指變量名稱(chēng)發(fā)生錯(cuò)誤,比如用戶試圖調(diào)用一個(gè)還未被賦值或初始化的變量時(shí)會(huì)被觸發(fā)。

>>> name
Traceback (most recent call last):
  File "", line 1, in 
NameError: name 'name' is not defined

8、IOError

IOError 為打開(kāi)文件錯(cuò)誤,當(dāng)用戶試圖以讀取方式打開(kāi)一個(gè)不存在的文件時(shí)引發(fā)。

>>> fb = open('demo.txt')
Traceback (most recent call last):
  File "", line 1, in 
IOError: [Errno 2] No such file or directory: 'demo.txt'

9、StopIteration

StopIteration為迭代器錯(cuò)誤,當(dāng)訪問(wèn)至迭代器最后一個(gè)值時(shí)仍然繼續(xù)訪問(wèn),就會(huì)引發(fā)這種異常,提醒用戶迭代器中已經(jīng)沒(méi)有值可供訪問(wèn)了。

>>> alist = range(2)
>>> agen = iter(alist)
>>> next(agen)
0
>>> next(agen)
1
>>> next(agen)
Traceback (most recent call last):
  File "", line 1, in 
StopIteration

10、AssertionError

AssertionError 為斷言錯(cuò)誤,當(dāng)用戶利用斷言語(yǔ)句檢測(cè)異常時(shí),如果斷言語(yǔ)句檢測(cè)的表達(dá)式為假,則會(huì)引發(fā)這種異常。

>>> alist = [0,1,2]
>>> assert isinstance(alist, list)
>>> assert isinstance(alist, dict)
Traceback (most recent call last):
  File "", line 1, in 
AssertionError

11. IndentationError

Python 是一門(mén)嚴(yán)格縮進(jìn)的語(yǔ)言,如果縮進(jìn)有問(wèn)題,就會(huì)導(dǎo)致解釋器解析異常,拋出 IndentationError

>>> while True:
... print("hello")
  File "", line 2
    print("hello")
        ^
IndentationError: expected an indented block

12. ImportError

當(dāng)你在使用 import 導(dǎo)包的時(shí)候,如果因?yàn)榘e(cuò)誤或者路徑不對(duì)、包未安裝,都會(huì)拋出 ImportError

>>> import oss
Traceback (most recent call last):
  File "", line 1, in 
ImportError: No module named oss

審核編輯:符乾江
聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • python
    +關(guān)注

    關(guān)注

    56

    文章

    4825

    瀏覽量

    86478
  • 異常
    +關(guān)注

    關(guān)注

    0

    文章

    23

    瀏覽量

    9354
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    python入門(mén)圣經(jīng)-高清電子書(shū)(建議下載)

    和Pygal 等強(qiáng)大的Python 庫(kù)和工具介紹,以及列表、字典、if 語(yǔ)句、類(lèi)、文件與異常、代碼測(cè)試等內(nèi)容; 第二部分將理論付諸實(shí)踐,講解如何開(kāi)發(fā)三個(gè)項(xiàng)目,包括簡(jiǎn)單的Python 2D 游戲開(kāi)發(fā)如何利用數(shù)據(jù)
    發(fā)表于 04-10 16:53

    使用Python3.7導(dǎo)入cv2時(shí)遇到錯(cuò)誤怎么解決?

    使用 Python* 版本 3.7。 Ran Classification Python* 演示。 在導(dǎo)入 cv2 時(shí)遇到錯(cuò)誤: ImportError: DLL load failed: The specified modu
    發(fā)表于 03-05 09:37

    常見(jiàn)xgboost錯(cuò)誤及解決方案

    XGBoost(eXtreme Gradient Boosting)是一種流行的機(jī)器學(xué)習(xí)算法,用于解決分類(lèi)和回歸問(wèn)題。盡管它非常強(qiáng)大和靈活,但在使用過(guò)程中可能會(huì)遇到一些常見(jiàn)錯(cuò)誤。以下是一些常見(jiàn)
    的頭像 發(fā)表于 01-19 11:22 ?2427次閱讀

    電橋電路的常見(jiàn)錯(cuò)誤分析

    電橋電路的常見(jiàn)錯(cuò)誤分析主要包括以下幾個(gè)方面: 一、電阻值不準(zhǔn)確 電阻值不準(zhǔn)確是電橋電路常見(jiàn)錯(cuò)誤之一。這可能是由于電阻本身的誤差,如電阻的標(biāo)稱(chēng)值與實(shí)際值存在偏差,或者電阻老化、溫度變化
    的頭像 發(fā)表于 01-09 10:08 ?1069次閱讀

    電源 PCB 布局中的常見(jiàn)錯(cuò)誤及避免方式

    異常現(xiàn)象、根本原因以及優(yōu)化布局的方法和相關(guān)技巧。 1. 常見(jiàn)錯(cuò)誤一:功率器件散熱不良 異常現(xiàn)象 功率器件溫度過(guò)高,可能導(dǎo)致器件性能下降,甚至損壞。例如,MOSFET 的導(dǎo)通電阻會(huì)隨溫
    的頭像 發(fā)表于 01-08 15:28 ?1118次閱讀

    常見(jiàn)電位測(cè)量錯(cuò)誤及解決方案

    常見(jiàn)電位測(cè)量錯(cuò)誤及解決方案 1. 接觸不良 錯(cuò)誤描述: 在電位測(cè)量中,接觸不良是最常見(jiàn)的問(wèn)題之一。這可能是由于探針接觸不良、氧化層、污垢或腐蝕造成的。 解決方案: 清潔探針和被測(cè)點(diǎn),確
    的頭像 發(fā)表于 12-28 14:08 ?1059次閱讀

    串口通訊異常處理方法 串口設(shè)備連接方式

    串口通信異常處理方法 1. 異常檢測(cè) 在串口通信中,首先需要能夠檢測(cè)到異常情況。異常檢測(cè)可以通過(guò)以下幾種方式實(shí)現(xiàn): 硬件檢測(cè) :利用串口硬件的中斷和狀態(tài)寄存器來(lái)檢測(cè)
    的頭像 發(fā)表于 12-27 09:53 ?3910次閱讀

    EEPROM編程常見(jiàn)錯(cuò)誤及解決方案

    EEPROM(電可擦可編程只讀存儲(chǔ)器)在編程過(guò)程中可能會(huì)遇到多種錯(cuò)誤。以下是一些常見(jiàn)的EEPROM編程錯(cuò)誤及其解決方案: 常見(jiàn)錯(cuò)誤 數(shù)據(jù)寫(xiě)入
    的頭像 發(fā)表于 12-16 17:08 ?4319次閱讀

    常見(jiàn)的GND連接錯(cuò)誤及解決方案

    GND(接地)連接在電子設(shè)計(jì)和硬件開(kāi)發(fā)中至關(guān)重要,錯(cuò)誤的GND連接可能導(dǎo)致電路不穩(wěn)定、信號(hào)干擾甚至設(shè)備損壞。以下是一些常見(jiàn)的GND連接錯(cuò)誤及其解決方案: 一、GND網(wǎng)絡(luò)未連接 問(wèn)題描述 : 在
    的頭像 發(fā)表于 11-29 16:02 ?5757次閱讀

    aes加密的常見(jiàn)錯(cuò)誤及解決方案

    AES(Advanced Encryption Standard,高級(jí)加密標(biāo)準(zhǔn))是一種對(duì)稱(chēng)加密算法,它使用固定長(zhǎng)度的密鑰對(duì)數(shù)據(jù)進(jìn)行加密。在使用AES加密時(shí),可能會(huì)遇到一些常見(jiàn)錯(cuò)誤。以下是對(duì)這些錯(cuò)誤
    的頭像 發(fā)表于 11-14 15:13 ?4020次閱讀

    常見(jiàn)傅里葉變換錯(cuò)誤及解決方法

    傅里葉變換是一種數(shù)學(xué)工具,用于將信號(hào)從時(shí)域轉(zhuǎn)換到頻域,以便分析其頻率成分。在使用傅里葉變換時(shí),可能會(huì)遇到一些常見(jiàn)錯(cuò)誤。 1. 采樣定理錯(cuò)誤 錯(cuò)誤描述: 在進(jìn)行傅里葉變換之前,沒(méi)有正確
    的頭像 發(fā)表于 11-14 09:42 ?2098次閱讀

    SUMIF函數(shù)常見(jiàn)錯(cuò)誤及解決方案

    SUMIF函數(shù)是Excel中一個(gè)非常實(shí)用的函數(shù),用于根據(jù)給定條件對(duì)數(shù)據(jù)進(jìn)行求和。然而,在使用過(guò)程中,用戶可能會(huì)遇到一些常見(jiàn)錯(cuò)誤。 1. 錯(cuò)誤:范圍不正確 錯(cuò)誤描述: 用戶可能沒(méi)有正確設(shè)
    的頭像 發(fā)表于 11-11 09:10 ?5591次閱讀

    pcb板設(shè)計(jì)中的常見(jiàn)錯(cuò)誤

    錯(cuò)誤,這些錯(cuò)誤可能會(huì)導(dǎo)致電路性能下降、成本增加甚至項(xiàng)目失敗。 1. 布局不合理 錯(cuò)誤分析 布局是PCB設(shè)計(jì)的基礎(chǔ),不合理的布局會(huì)導(dǎo)致信號(hào)干擾、電磁兼容性(EMC)問(wèn)題以及熱管理問(wèn)題。常見(jiàn)
    的頭像 發(fā)表于 11-04 13:58 ?856次閱讀

    服務(wù)器錯(cuò)誤是怎么回事?常見(jiàn)錯(cuò)誤原因及解決方法匯總

    服務(wù)器錯(cuò)誤是怎么回事?最常見(jiàn)的原因分有六個(gè),分別是:硬件問(wèn)題、軟件問(wèn)題、網(wǎng)絡(luò)問(wèn)題、資源耗盡、數(shù)據(jù)庫(kù)、文件權(quán)限問(wèn)題??梢愿鶕?jù)以下具體錯(cuò)誤原因進(jìn)行辨別,并選擇適合的解決方法。關(guān)于常見(jiàn)服務(wù)器
    的頭像 發(fā)表于 08-12 10:11 ?2186次閱讀

    嵌入式C編程常用的異常錯(cuò)誤處理

    嵌入式C編程中,異常錯(cuò)誤處理是確保系統(tǒng)穩(wěn)定性和可靠性的重要部分。以下是一些常見(jiàn)異常錯(cuò)誤處理方法及其詳細(xì)說(shuō)明和示例: 1. 斷言 (Ass
    發(fā)表于 08-06 14:32
    主站蜘蛛池模板: 国产女主播在线播放一区二区 | 天堂网最新版www | 凹凸福利视频导航 | 日韩免费一级 | 最新日本免费一区二区三区中文 | 四虎精品永久在线 | 亚洲国产日韩精品怡红院 | 天天综合天天射 | 亚洲成人激情片 | 久久天天躁狠狠躁夜夜爽 | 一级做a爰片久久毛片图片 一级做a爰片久久毛片鸭王 | 亚洲综合色在线观看 | 色婷婷久久综合中文久久蜜桃 | 精品三级在线 | 中文字幕视频一区 | 四虎影音在线观看 | 又黄又爽的成人免费网站 | 俺来也俺来也天天夜夜视频 | 国产午夜精品一区二区理论影院 | 亚洲综合色站 | 午夜久久免费视频 | 日韩一级在线观看 | 8x8x极品国产在线 | 给个网站可以在线观看你懂的 | 速度与激情一 | 最近高清免费观看视频大全 | 九月婷婷综合 | 狠狠色噜噜噜噜狠狠狠狠狠狠奇米 | 国产人人看 | 污污的黄色小说 | 嗯!啊!使劲用力在线观看 | 免费黄色 | 国产精品单位女同事在线 | 男人女人真曰批视频播放 | 黄h视频在线观看视频 | 四虎国产精品高清在线观看 | 婷婷亚洲视频 | 成人羞羞视频国产 | 欧美视频xxxxx| 国产香蕉久久精品综合网 | 亚洲伊人久久综合影院2021 |