python异常处理结构_python-异常处理
異常處理
1、異常基礎(chǔ)
1 try:2 names[3]3 data['name']4 except KeyError as e: #特定錯(cuò)誤
5 print("沒(méi)有這個(gè)key",e)6 except Exception as e: #其他錯(cuò)誤
7 print("出錯(cuò)了",e)8 else:9 print("一切正常")10 finally:11 print("不管有沒(méi)有錯(cuò),都執(zhí)行")
例子
在編程過(guò)程中為了增加友好性,在程序出現(xiàn)bug時(shí)一般不會(huì)將錯(cuò)誤信息顯示給用戶(hù),而是現(xiàn)實(shí)一個(gè)提示的頁(yè)面,通俗來(lái)說(shuō)就是不讓用戶(hù)看見(jiàn)大黃頁(yè)!!!
需求:將用戶(hù)輸入的兩個(gè)數(shù)字相加
1 whileTrue:2 num1 = raw_input('num1:')3 num2 = raw_input('num2:')4 try:5 num1 =int(num1)6 num2 =int(num2)7 result = num1 +num28 exceptException, e:9 print '出現(xiàn)異常,信息如下:'
10 print e
View Code
whileTrue:
num1 = raw_input('num1:')
num2 = raw_input('num2:')
try:
num1 =int(num1)
num2 =int(num2)
result = num1 +num2
exceptException, e:
print '出現(xiàn)異常,信息如下:'
print e
2、異常種類(lèi)
python中的異常種類(lèi)非常多,每個(gè)異常專(zhuān)門(mén)用于處理某一項(xiàng)異常!!!
1 AttributeError 試圖訪問(wèn)一個(gè)對(duì)象沒(méi)有的樹(shù)形,比如foo.x,但是foo沒(méi)有屬性x2 IOError 輸入/輸出異常;基本上是無(wú)法打開(kāi)文件3 ImportError 無(wú)法引入模塊或包;基本上是路徑問(wèn)題或名稱(chēng)錯(cuò)誤4 IndentationError 語(yǔ)法錯(cuò)誤(的子類(lèi)) ;代碼沒(méi)有正確對(duì)齊5 IndexError 下標(biāo)索引超出序列邊界,比如當(dāng)x只有三個(gè)元素,卻試圖訪問(wèn)x[5]6 KeyError 試圖訪問(wèn)字典里不存在的鍵7 KeyboardInterrupt Ctrl+C被按下8 NameError 使用一個(gè)還未被賦予對(duì)象的變量9 SyntaxError Python代碼非法,代碼不能編譯(個(gè)人認(rèn)為這是語(yǔ)法錯(cuò)誤,寫(xiě)錯(cuò)了)10 TypeError 傳入對(duì)象類(lèi)型與要求的不符合11 UnboundLocalError 試圖訪問(wèn)一個(gè)還未被設(shè)置的局部變量,基本上是由于另有一個(gè)同名的全局變量,12 導(dǎo)致你以為正在訪問(wèn)它13 ValueError 傳入一個(gè)調(diào)用者不期望的值,即使值的類(lèi)型是正確的
View Code
AttributeError 試圖訪問(wèn)一個(gè)對(duì)象沒(méi)有的樹(shù)形,比如foo.x,但是foo沒(méi)有屬性x
IOError 輸入/輸出異常;基本上是無(wú)法打開(kāi)文件
ImportError 無(wú)法引入模塊或包;基本上是路徑問(wèn)題或名稱(chēng)錯(cuò)誤
IndentationError 語(yǔ)法錯(cuò)誤(的子類(lèi)) ;代碼沒(méi)有正確對(duì)齊
IndexError 下標(biāo)索引超出序列邊界,比如當(dāng)x只有三個(gè)元素,卻試圖訪問(wèn)x[5]
KeyError 試圖訪問(wèn)字典里不存在的鍵
KeyboardInterrupt Ctrl+C被按下
NameError 使用一個(gè)還未被賦予對(duì)象的變量
SyntaxError Python代碼非法,代碼不能編譯(個(gè)人認(rèn)為這是語(yǔ)法錯(cuò)誤,寫(xiě)錯(cuò)了)
TypeError 傳入對(duì)象類(lèi)型與要求的不符合
UnboundLocalError 試圖訪問(wèn)一個(gè)還未被設(shè)置的局部變量,基本上是由于另有一個(gè)同名的全局變量,
導(dǎo)致你以為正在訪問(wèn)它
ValueError 傳入一個(gè)調(diào)用者不期望的值,即使值的類(lèi)型是正確的
1 ArithmeticError2 AssertionError3 AttributeError4 BaseException5 BufferError6 BytesWarning7 DeprecationWarning8 EnvironmentError9 EOFError10 Exception11 FloatingPointError12 FutureWarning13 GeneratorExit14 ImportError15 ImportWarning16 IndentationError17 IndexError18 IOError19 KeyboardInterrupt20 KeyError21 LookupError22 MemoryError23 NameError24 NotImplementedError25 OSError26 OverflowError27 PendingDeprecationWarning28 ReferenceError29 RuntimeError30 RuntimeWarning31 StandardError32 StopIteration33 SyntaxError34 SyntaxWarning35 SystemError36 SystemExit37 TabError38 TypeError39 UnboundLocalError40 UnicodeDecodeError41 UnicodeEncodeError42 UnicodeError43 UnicodeTranslateError44 UnicodeWarning45 UserWarning46 ValueError47 Warning48 ZeroDivisionError
View Code
ArithmeticError
AssertionError
AttributeError
BaseException
BufferError
BytesWarning
DeprecationWarning
EnvironmentError
EOFError
Exception
FloatingPointError
FutureWarning
GeneratorExit
ImportError
ImportWarning
IndentationError
IndexError
IOError
KeyboardInterrupt
KeyError
LookupError
MemoryError
NameError
NotImplementedError
OSError
OverflowError
PendingDeprecationWarning
ReferenceError
RuntimeError
RuntimeWarning
StandardError
StopIteration
SyntaxError
SyntaxWarning
SystemError
SystemExit
TabError
TypeError
UnboundLocalError
UnicodeDecodeError
UnicodeEncodeError
UnicodeError
UnicodeTranslateError
UnicodeWarning
UserWarning
ValueError
Warning
ZeroDivisionError
1 dic = ["wupeiqi", 'alex']2 try:3 dic[10]4 exceptIndexError, e:5 print e
View Code
dic = ["wupeiqi", 'alex']
try:
dic[10]
exceptIndexError, e:
print e
1 dic = {'k1':'v1'}2 try:3 dic['k20']4 exceptKeyError, e:5 print e
View Code
dic = {'k1':'v1'}
try:
dic['k20']
exceptKeyError, e:
print e
1 s1 = 'hello'
2 try:3 int(s1)4 exceptValueError, e:5 print e
View Code
s1 = 'hello'
try:
int(s1)
exceptValueError, e:
print e
對(duì)于上述實(shí)例,異常類(lèi)只能用來(lái)處理指定的異常情況,如果非指定異常則無(wú)法處理。
所以,寫(xiě)程序時(shí)需要考慮到try代碼塊中可能出現(xiàn)的任意異常,可以這樣寫(xiě):
萬(wàn)能異常 在python的異常中,有一個(gè)萬(wàn)能異常:Exception,他可以捕獲任意異常,即:
接下來(lái)你可能要問(wèn)了,既然有這個(gè)萬(wàn)能異常,其他異常是不是就可以忽略了!
答:當(dāng)然不是,對(duì)于特殊處理或提醒的異常需要先定義,最后定義Exception來(lái)確保程序正常運(yùn)行。
3、異常其他結(jié)構(gòu)
4、主動(dòng)觸發(fā)異常
5、自定義異常
6、斷言
總結(jié)
以上是生活随笔為你收集整理的python异常处理结构_python-异常处理的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: python语言编写一个生成九宫格图片的
- 下一篇: wpf listbox绑定不跟新_你知道