異常處理是當程式出錯了,但是我們又不想讓使用者看到這個錯誤,而且我在寫程式的時候已經預料到了它可以出現這樣的錯誤,出現這樣的錯誤代表著什麼,我們可以提前處理這些個錯誤。
try:語法如下:code
except attributeerror as e:
print(e)
except nameerror as e:
print(e)
except exception as e:
print("其他錯誤",e)
else:
print("一切正常")
finally:
print("是否出錯都列印!")
try:**如下:code #處理的語句
except error1 as e: #遇到error1執行下面的語句,在python2中寫成except error1,e
print(e)
name = [1,2,3]①寫多個except,語法如下:try:
name[3] #不存在3這個下標值
except indexerror as e: #抓取 indexerror 這個異常
print(e) #e是錯誤的詳細資訊
#輸出list index out of range
try:②寫1個except,語法如下:code
except error1 as e: #處理error1異常
print(e)
except error2 as e: #處理error2異常
print(e)
try:注:第二種寫法的用處:括號裡面的所有錯誤,不管出現裡面任何一種錯誤都用統一的處理方法。code
except (error1,error2,...) as e:
print(e)
語法如下:
try:作用:沒有異常,則走else部分的邏輯**code
except (error1,error2,...) as e:
print(e)
except exception as e: #用exception表示一下子抓住所有異常,這個一般情況下建議在異常最後麵用,用在最後抓未知的異常
print(e)
try:作用:不管有沒有錯誤,都會執行finnally中的**print("susu,handson") #**沒有異常
except (indexerror,keyerror) as e:
print(e)
except exception as e:
print(e)
else: #沒有異常出錯,走else的邏輯**
print("沒有異常")
#輸出susu,handson
沒有異常
語法如下:
try:code
except (error1,error2,...) as e:
print(e)
except exception as e:
print(e)
else:
print("沒有錯誤,執行")
finnally:
print("不管有沒有錯,都執行finnally")
attributeerror 試圖訪問乙個物件沒有的樹形,比如foo.x,但是foo沒有屬性xioerror 輸入/輸出異常;基本上是無法開啟檔案
importerror 無法引入模組或包;基本上是路徑問題或名稱錯誤
indentationerror 語法錯誤(的子類) ;**沒有正確對齊
indexerror 下標索引超出序列邊界,比如當x只有三個元素,卻試圖訪問x[5]
keyerror 試圖訪問字典裡不存在的鍵
keyboardinterrupt ctrl+c被按下
nameerror 使用乙個還未被賦予物件的變數
syntaxerror python**非法,**不能編譯(個人認為這是語法錯誤,寫錯了)
typeerror 傳入物件型別與要求的不符合
unboundlocalerror 試圖訪問乙個還未被設定的區域性變數,基本上是由於另有乙個同名的全域性變數,
導致你以為正在訪問它
valueerror 傳入乙個呼叫者不期望的值,即使值的型別是正確的
1view codearithmeticerror
2assertionerror
3attributeerror
4baseexception
5buffererror
6byteswarning
7deprecationwarning
8environmenterror
9eoferror
10exception
11floatingpointerror
12futurewarning
13generatorexit
14importerror
15importwarning
16indentationerror
17indexerror
18ioerror
19keyboardinterrupt
20keyerror
21lookuperror
22memoryerror
23nameerror
24notimplementederror
25oserror
26overflowerror
27pendingdeprecationwarning
28referenceerror
29runtimeerror
30runtimewarning
31standarderror
32stopiteration
33syntaxerror
34syntaxwarning
35systemerror
36systemexit
37taberror
38typeerror
39unboundlocalerror
40unicodedecodeerror
41unicodeencodeerror
42unicodeerror
43unicodetranslateerror
44unicodewarning
45userwarning
46valueerror
47warning
48zerodivisionerror
4950 更多異常
s1 = 'hello'try:
int(s1)
except valueerror, e: #python2.7的寫法
print e
class gaoerror(exception): #定義乙個異常類,繼承exceptiondef __init__(self,message):
self.message = message
def __str__(self):
return self.message #給物件取乙個名字
try:自定義使用總結:raise gaoerror("資料庫連線不上了") #觸發自定義異常,gaoerror("資料庫連線不上了")這個物件
except gaoerror as e:
print(e)
#輸出資料庫連線不上了
資料庫連線不上的資訊
許可權問題,解析是沒有許可權了,給出異常提示
業務邏輯的錯誤
Python 9「切片和迭代「
我們在對list或者tuple的元素進行取值時,一般的方法是這樣的 l 1,2,3 l 0 l 1 l 2 或者使用迴圈來獲取 l n 2 for i in range n lpython提供了更加簡便的方法能讓我們獲取這些值,那就是切片 slice list 1,2,3,4,5 取list集合中的...
學python(9) 快速排序
第一種 快速排序 defkp ls 判斷要操作的列表長度是否大於1 if len ls 1 如果列表只有乙個數,則直接返回列表 return ls 定義兩個列表儲存相對較大的數和相對較小的數 maxa mina 這次選擇用第乙個數作為分割標準 遍歷除了第乙個資料的列表 for i in ls 1 判...
python之異常處理 Python之異常處理
異常物件 請大家執行如下 a 100 0 print a 就會發現直譯器顯示如下的錯誤提示 traceback most recent call last file x.py line 1,in a 100 0 zerodivisionerror division by zero 大家要學會看直譯器...