python异常处理结构_python-异常处理
異常處理
1、異常基礎
1 try:2 names[3]3 data['name']4 except KeyError as e: #特定錯誤
5 print("沒有這個key",e)6 except Exception as e: #其他錯誤
7 print("出錯了",e)8 else:9 print("一切正常")10 finally:11 print("不管有沒有錯,都執行")
例子
在編程過程中為了增加友好性,在程序出現bug時一般不會將錯誤信息顯示給用戶,而是現實一個提示的頁面,通俗來說就是不讓用戶看見大黃頁!!!
需求:將用戶輸入的兩個數字相加
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 '出現異常,信息如下:'
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 '出現異常,信息如下:'
print e
2、異常種類
python中的異常種類非常多,每個異常專門用于處理某一項異常!!!
1 AttributeError 試圖訪問一個對象沒有的樹形,比如foo.x,但是foo沒有屬性x2 IOError 輸入/輸出異常;基本上是無法打開文件3 ImportError 無法引入模塊或包;基本上是路徑問題或名稱錯誤4 IndentationError 語法錯誤(的子類) ;代碼沒有正確對齊5 IndexError 下標索引超出序列邊界,比如當x只有三個元素,卻試圖訪問x[5]6 KeyError 試圖訪問字典里不存在的鍵7 KeyboardInterrupt Ctrl+C被按下8 NameError 使用一個還未被賦予對象的變量9 SyntaxError Python代碼非法,代碼不能編譯(個人認為這是語法錯誤,寫錯了)10 TypeError 傳入對象類型與要求的不符合11 UnboundLocalError 試圖訪問一個還未被設置的局部變量,基本上是由于另有一個同名的全局變量,12 導致你以為正在訪問它13 ValueError 傳入一個調用者不期望的值,即使值的類型是正確的
View Code
AttributeError 試圖訪問一個對象沒有的樹形,比如foo.x,但是foo沒有屬性x
IOError 輸入/輸出異常;基本上是無法打開文件
ImportError 無法引入模塊或包;基本上是路徑問題或名稱錯誤
IndentationError 語法錯誤(的子類) ;代碼沒有正確對齊
IndexError 下標索引超出序列邊界,比如當x只有三個元素,卻試圖訪問x[5]
KeyError 試圖訪問字典里不存在的鍵
KeyboardInterrupt Ctrl+C被按下
NameError 使用一個還未被賦予對象的變量
SyntaxError Python代碼非法,代碼不能編譯(個人認為這是語法錯誤,寫錯了)
TypeError 傳入對象類型與要求的不符合
UnboundLocalError 試圖訪問一個還未被設置的局部變量,基本上是由于另有一個同名的全局變量,
導致你以為正在訪問它
ValueError 傳入一個調用者不期望的值,即使值的類型是正確的
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
對于上述實例,異常類只能用來處理指定的異常情況,如果非指定異常則無法處理。
所以,寫程序時需要考慮到try代碼塊中可能出現的任意異常,可以這樣寫:
萬能異常 在python的異常中,有一個萬能異常:Exception,他可以捕獲任意異常,即:
接下來你可能要問了,既然有這個萬能異常,其他異常是不是就可以忽略了!
答:當然不是,對于特殊處理或提醒的異常需要先定義,最后定義Exception來確保程序正常運行。
3、異常其他結構
4、主動觸發異常
5、自定義異常
6、斷言
總結
以上是生活随笔為你收集整理的python异常处理结构_python-异常处理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python语言编写一个生成九宫格图片的
- 下一篇: python中webdriver_浅谈p