try:
# 未宣告的變數
print(x)
except exception as e:
print(e)
nameerror:嘗試訪問乙個未申明的變數
print(v)
nameerror: name 'v' is not defined
zerodivisionerror:除數為0
print(1/0)
zerodivisionerror: int division or modulo by zero
syntaxerror:語法錯誤
print(,)
file "test.py", line 201
print(,)
^syntaxerror: invalid syntax
indexerror:索引超出範圍
list = [2]
print(list[3])
traceback (most recent call last):
file "", line 1, in list[3]
indexerror: list index out of range
keyerror:字典關鍵字不存在
dic =
print(dic['3'])
traceback (most recent call last):
file "", line 1, in dic['3']
keyerror: '3'
ioerror:輸入輸出錯誤
f = open('abc')
ioerror: [errno 2] no such file or directory: 'abc'
attributeerror:訪問未知物件屬性
class worker:
def work():
print("i am working")
w = worker()
w.atraceback (most recent call last):
file "", line 1, in w.a
attributeerror: 'worker' object has no attribute 'a'
valueerror:數值錯誤
int('d')
traceback (most recent call last):
file "", line 1, in int('d')
valueerror: invalid literal for int() with base 10: 'd'
typeerror:型別錯誤
istr = '22'
ival = 22
obj = istr + ival;
traceback (most recent call last):
file "", line 1, in obj = istr + ival;
typeerror: can't convert 'int' object to str implicitly
(1)執行try子句(在關鍵字try和關鍵字except之間的語句)
(2)如果沒有異常發生,忽略except子句,try子句執行後結束。
(3)如果在執行try子句的過程中發生了異常,那麼try子句剩下的部分將被忽略。如果異常的型別和except之後的名稱相符,那麼對應的except子句將被執行。最後執行 try 語句之後的**。
try:
print(x)
# 產生的異常型別和捕獲的異常型別相符
except nameerror as e:
print(1)
print(e)
(4)如果異常沒有與任何except匹配,那麼這個異常將會傳遞給上層的try中。
try:
try:
print(x)
# 產生的異常和捕獲異常的型別不符,則異常傳遞給上層try
except indexerror as e:
print(1)
print(e)
except exception as ee:
print(2)
print(ee)
(5)乙個 try 語句可能包含多個except子句,分別來處理不同的特定的異常。最多只有乙個分支會被執行。
try:
print(x)
except indexerror as e1:
print(1)
print(e1)
except nameerror as e2:
print(2)
print(e2)
(6)乙個except子句可以同時處理多個異常,這些異常將被放在乙個括號裡成為乙個元組。
try:
print(x)
except (indexerror, nameerror) as e:
print(e)
(7)最後乙個except子句可以忽略異常的名稱,它將被當作萬用字元使用。你可以使用這種方法列印乙個錯誤資訊。
try:
print(x)
except:
print('您遇到了錯誤')
(8)try except語句還有乙個可選的else子句,如果使用這個子句,那麼必須放在所有的except子句之後。這個子句將在try子句沒有發生任何異常的時候執行。
try:
print(x)
except:
print('您遇到了錯誤')
else:
print('前面沒有發生任何錯誤')
(9)異常處理並不僅僅處理那些直接發生在try子句中的異常,而且還能處理子句中呼叫的函式(甚至間接呼叫的函式)裡丟擲的異常。
def this_fails():
x = 1 / 0
try:
this_fails()
except zerodivisionerror as err:
print('0不能作為除數', err)
(10)try……finally 語句,無論是否發生異常,都會執行finally塊的**
try:
print(11)
except:
pass
finally:
print('hh')
之所以我們能捕獲異常,那是因為**執行的時候,系統給我們丟擲了異常。其實我們也可以手動自行丟擲異常。
def xx():
raise exception('錯誤', 1111)
try:
xx()
except exception as e:
print(e)
python異常處理 Python 異常處理
使用者輸入不完整 比如輸入為空 或者輸入非法 輸入不是數字 異常就是程式執行時發生錯誤的訊號,在python中,錯誤觸發的異常如下 在python中不同的異常可以用不同的型別 python中統一了類與型別,型別即類 去標識,不同的類物件標識不同的異常,乙個異常標識一種錯 觸發indexerror 觸...
Python的異常處理
python中的異常型別分如下幾種 1 nameerror 嘗試訪問乙個未申明的變數 v nameerror name v is not defined 2 zerodivisionerror 除數為0 v 1 0 zerodivisionerror int division or modulo b...
Python的異常處理
1.raise語句 為了引發異常,可以使用乙個類或者例項呼叫raise語句。raise exceptiontraceback most recent call last file line 1,in exception raise exception hyperdive overload trace...