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

一篇文章帶你了解python異?;A(chǔ)

 更新時(shí)間:2021年08月18日 09:06:15   作者:wakeyo_J  
今天小編就為大家分享一篇關(guān)于Python中的異常介紹,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧

1. 程序中的問(wèn)題

1.1 低級(jí)語(yǔ)法錯(cuò)誤

低級(jí)錯(cuò)誤純屬語(yǔ)法錯(cuò)誤,代碼主要在編寫、調(diào)試階段就報(bào)錯(cuò)。

>>> if True
SyntaxError: invalid syntax
>>> 

上述錯(cuò)誤是初學(xué)時(shí)很容易犯的語(yǔ)法錯(cuò)誤,True后面缺少冒號(hào)(:)。

1.2 中介錯(cuò)誤:代碼存在隱性錯(cuò)誤

隱形錯(cuò)誤主要是指代碼編寫存在邏輯錯(cuò)誤或缺陷,當(dāng)程序滿足特定數(shù)據(jù)處理?xiàng)l件時(shí),報(bào)錯(cuò)或給出錯(cuò)誤答案。

>>> def print_D(dic):
	i=0
	len1=len(dic)
	while i < len1:
		print(dic.popitem())    #隨機(jī)刪除并返回一個(gè)元素
		i+=1
		
>>> print_D({1:'a',2:'b'})
(2, 'b')
(1, 'a')

上述代碼能夠正常運(yùn)行,但是在實(shí)際的程序使用過(guò)程中,可能另一個(gè)程序員傳遞一個(gè)非字典對(duì)象后。

>>> print_D([1,2,3,4])
Traceback (most recent call last):
  File "<pyshell#11>", line 1, in <module>
    print_D([1,2,3,4])
  File "<pyshell#9>", line 5, in print_D
    print(dic.popitem())
AttributeError: 'list' object has no attribute 'popitem'

錯(cuò)誤的傳遞對(duì)象導(dǎo)致了正常程序出錯(cuò),這就是隱性錯(cuò)誤。隱性錯(cuò)誤的特點(diǎn)是正常情況下程序正常運(yùn)行,特殊情況下(如邊界值沒(méi)有考慮到,傳入數(shù)據(jù)沒(méi)有仔細(xì)檢查類型等)出錯(cuò)。有些隱性錯(cuò)誤甚至不報(bào)錯(cuò),而是由結(jié)果輸出,這是最糟糕的情況。

1.3 高級(jí)錯(cuò)誤:軟件面對(duì)不確定性的異常錯(cuò)誤

高級(jí)錯(cuò)誤指不確定性的錯(cuò)誤,主要指軟件的代碼本身沒(méi)有問(wèn)題,所輸入的數(shù)據(jù)也能得到控制或保證,而是在運(yùn)行過(guò)程中環(huán)境所帶來(lái)的不確定性異常。如:

(1)軟件本身去嘗試打開(kāi)一個(gè)文件,而這個(gè)文件已經(jīng)被破壞或獨(dú)占(獨(dú)占指一個(gè)進(jìn)程(線程)處理過(guò)程,其他進(jìn)程(線程)無(wú)法同步處理,只能等待這個(gè)進(jìn)程(線程)處理完成,其他進(jìn)程(線程)才能繼續(xù)操作)。

(2)軟件在往數(shù)據(jù)庫(kù)插入數(shù)據(jù)過(guò)程中,突然網(wǎng)絡(luò)中斷,導(dǎo)致數(shù)據(jù)丟失

(3)軟件運(yùn)行硬件出現(xiàn)故障,導(dǎo)致軟件無(wú)法正常運(yùn)行等

(4)數(shù)據(jù)庫(kù)系統(tǒng)被破壞,軟件讀寫數(shù)據(jù)報(bào)錯(cuò)

(5)軟件輸入內(nèi)容過(guò)度復(fù)雜或存在錯(cuò)誤操作,。

2. 捕捉異常

2.1 基本異常捕捉語(yǔ)句

基本異常捕捉語(yǔ)句語(yǔ)法

try:
	代碼模塊1
except:
	代碼模塊2

try關(guān)鍵字,表示捕捉異常語(yǔ)句的開(kāi)始;代碼模塊1,屬于正常需要執(zhí)行的代碼模塊;except關(guān)鍵字,用于捕捉異常信息,并可以給出出錯(cuò)信息(默認(rèn)英文提示)。

在這里插入圖片描述

(1)先執(zhí)行try語(yǔ)句,代表捕捉異常機(jī)制開(kāi)始

(2)執(zhí)行代碼模塊1,若沒(méi)有出錯(cuò),忽略except關(guān)鍵字和代碼模塊2,代碼正常執(zhí)行完畢

(3)若執(zhí)行代碼模塊1過(guò)程發(fā)生異?,F(xiàn)象,則終止代碼模塊1內(nèi)剩余代碼的執(zhí)行,轉(zhuǎn)到except處

(4)except關(guān)鍵字捕捉到異常信息,并執(zhí)行代碼模塊2(往往給出錯(cuò)誤信息提示或做出錯(cuò)后問(wèn)題處理),異常處理結(jié)束

示例

>>> def print_D(dic):
	i=0
	try:
		len1=len(dic)
		while i < len1:
			print(dic.popitem())
			i+=1
	except:
		print('傳遞值類型出錯(cuò),必須為字典類型!')
		
>>> print_D({1:'a',2:'b'})
(2, 'b')
(1, 'a')
>>> print_D([1,2,3,4])
傳遞值類型出錯(cuò),必須為字典類型!        #出錯(cuò)后的正確提示信息

2.2 帶finally子句的異常處理

基本格式:

try:
	代碼模塊1
except:
	代碼模塊2
finally:
	代碼模塊3

finally關(guān)鍵字后的代碼模塊3,運(yùn)行代碼模塊1是否出錯(cuò)都會(huì)執(zhí)行的代碼功能。

案例 1

>>> try:
	1/0
except:
	print('除數(shù)不能為0')
finally:
	print('出現(xiàn)執(zhí)行結(jié)束')
>>> 

案例 2

>>> try:
	1/2
except:
	print('出書不能為0')
finally:
	print('出現(xiàn)運(yùn)行結(jié)束')
>>> 

#運(yùn)行結(jié)果
0.5
出現(xiàn)運(yùn)行結(jié)束

案例 3

import sys
try:
	1/0
except:
	print('除數(shù)不能為0')
	sys.exit()
finally:
	print('程序執(zhí)行結(jié)束')
print('我能執(zhí)行碼?')
>>> 

#運(yùn)行結(jié)果
除數(shù)不能為0
程序執(zhí)行結(jié)束

2.3 try-except-else 結(jié)構(gòu)

結(jié)構(gòu)運(yùn)行過(guò)程:程序進(jìn)入try語(yǔ)句部分,當(dāng)try語(yǔ)句部分發(fā)生異常則進(jìn)入except語(yǔ)句部分,若不發(fā)生異常進(jìn)入else語(yǔ)句部分。

try:
    print("正常代碼")
except Exception as e:
    print("將不會(huì)輸出這句話")
else:
    print("這句話將被輸出")
print('-'*30)
try:
    print(1/0)
except Exception as e:
    print("進(jìn)入異常處理")
else:
    print("不會(huì)輸出")

>>> 

#運(yùn)行結(jié)果
正常代碼
這句話將被輸出
------------------------------
進(jìn)入異常處理

2.4 try-except-else-finally 結(jié)構(gòu)

try:
    print("沒(méi)有異常")
except Exception as e:
    print("不會(huì)輸出!")
else:
    print("進(jìn)入else")
finally:
    print("必須輸出!")
print('-'*30)
try:
    print(1/0)
except Exception as e:
    print("引發(fā)異常")
else:
    print("不會(huì)進(jìn)入else")
finally:
    print("必須輸出!")
>>>

# 運(yùn)行結(jié)果
沒(méi)有異常
進(jìn)入else
必須輸出!
------------------------------
引發(fā)異常
必須輸出!

2.5 捕捉特定異常信息

在這里插入圖片描述

3. 拋出異常

python允許程序員自己觸發(fā)異常,可以通過(guò)raise關(guān)鍵字來(lái)實(shí)現(xiàn),使用格式:

raise [Exception]

Exception參數(shù)可選,其對(duì)象如上表所示的Exception類的子類。

示例一:不帶參數(shù)的觸發(fā)

>>> raise
Traceback (most recent call last):
  File "<pyshell#52>", line 1, in <module>
    raise
RuntimeError: No active exception to reraise
>>> 

代碼通過(guò)raise子句拋出一個(gè)沒(méi)有問(wèn)題的異常信息。

示例二:帶參數(shù)的觸發(fā)

>>> i='1'
>>> if type(i)!=int:
	raise TypeError('i類型出錯(cuò)!')
Traceback (most recent call last):
  File "<pyshell#57>", line 2, in <module>
    raise TypeError('i類型出錯(cuò)!')
TypeError: i類型出錯(cuò)!
>>> 

總結(jié)

本篇文章就到這里了,希望能給你帶來(lái)幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!

相關(guān)文章

  • 使用Python實(shí)現(xiàn)對(duì)PDF文件進(jìn)行密碼保護(hù)

    使用Python實(shí)現(xiàn)對(duì)PDF文件進(jìn)行密碼保護(hù)

    這篇文章主要為大家詳細(xì)了如何使用Python來(lái)實(shí)現(xiàn)PDF文件的密碼保護(hù),以確保只有授權(quán)的用戶可以訪問(wèn)文檔,文中的示例代碼簡(jiǎn)潔易懂,有需要的小伙伴可以參考一下
    2024-01-01
  • python中浮點(diǎn)數(shù)比較判斷!為什么不能用==(推薦)

    python中浮點(diǎn)數(shù)比較判斷!為什么不能用==(推薦)

    這篇文章主要介紹了python中浮點(diǎn)數(shù)比較判斷!為什么不能用==,本文給大家分享問(wèn)題解決方法,需要的朋友可以參考下
    2023-09-09
  • Numpy 多維數(shù)據(jù)數(shù)組的實(shí)現(xiàn)

    Numpy 多維數(shù)據(jù)數(shù)組的實(shí)現(xiàn)

    這篇文章主要介紹了Numpy 多維數(shù)據(jù)數(shù)組的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-06-06
  • python使用pymysql模塊操作MySQL

    python使用pymysql模塊操作MySQL

    本文講述了python操作mysql基礎(chǔ)實(shí)例展示,包含pymysql的使用,tkinter的使用,感興趣的朋友可以參考下
    2021-06-06
  • 詳解python之配置日志的幾種方式

    詳解python之配置日志的幾種方式

    本篇文章主要介紹了詳解python之配置日志的幾種方式,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-05-05
  • Mac下python包管理工具pip的安裝

    Mac下python包管理工具pip的安裝

    這篇文章介紹了Mac下python包管理工具pip的安裝方法,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-06-06
  • 詳解python數(shù)據(jù)結(jié)構(gòu)和算法

    詳解python數(shù)據(jù)結(jié)構(gòu)和算法

    這篇文章主要介紹了python數(shù)據(jù)結(jié)構(gòu)和算法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • spyder常用快捷鍵(分享)

    spyder常用快捷鍵(分享)

    下面小編就為大家?guī)?lái)一篇spyder常用快捷鍵(分享)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-07-07
  • python八種降維方法匯總

    python八種降維方法匯總

    在Python中,有多種降維方法可以使用,本文就來(lái)介紹八種降維方法以及使用場(chǎng)景,具有一定的參考價(jià)值,感興趣的可以一下,感興趣的可以了解一下
    2023-10-10
  • django靜態(tài)文件加載的方法

    django靜態(tài)文件加載的方法

    本篇文章主要介紹了django靜態(tài)文件加載的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-05-05

最新評(píng)論

威信县| 濮阳市| 荥经县| 天津市| 长治市| 罗定市| 汶上县| 伊春市| 宝坻区| 镇雄县| 汕尾市| 遂宁市| 柳江县| 崇明县| 黄陵县| 襄垣县| 咸丰县| 海兴县| 双江| 梧州市| 乌兰察布市| 日土县| 江川县| 郎溪县| 陵川县| 玉林市| 手游| 聂荣县| 绥棱县| 兴城市| 那坡县| 绥德县| 邯郸市| 临安市| 甘泉县| 济南市| 军事| 衡阳县| 都匀市| 巴彦淖尔市| 杨浦区|