python9之異常處理

2022-05-27 03:33:17 字數 4134 閱讀 4979

異常處理是當程式出錯了,但是我們又不想讓使用者看到這個錯誤,而且我在寫程式的時候已經預料到了它可以出現這樣的錯誤,出現這樣的錯誤代表著什麼,我們可以提前處理這些個錯誤。

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]

try:

name[3] #不存在3這個下標值

except indexerror as e: #抓取 indexerror 這個異常

print(e) #e是錯誤的詳細資訊

#輸出list index out of range

①寫多個except,語法如下:

try:

code

except error1 as e: #處理error1異常

print(e)

except error2 as e: #處理error2異常

print(e)

②寫1個except,語法如下:

try:

code

except (error1,error2,...) as e:

print(e)

注:第二種寫法的用處:括號裡面的所有錯誤,不管出現裡面任何一種錯誤都用統一的處理方法。

語法如下:

try:

code

except (error1,error2,...) as e:

print(e)

except exception as e: #用exception表示一下子抓住所有異常,這個一般情況下建議在異常最後麵用,用在最後抓未知的異常

print(e)

作用:沒有異常,則走else部分的邏輯**

try:

print("susu,handson") #**沒有異常

except (indexerror,keyerror) as e:

print(e)

except exception as e:

print(e)

else: #沒有異常出錯,走else的邏輯**

print("沒有異常")

#輸出susu,handson

沒有異常

作用:不管有沒有錯誤,都會執行finnally中的**

語法如下:

try:

code

except (error1,error2,...) as e:

print(e)

except exception as e:

print(e)

else:

print("沒有錯誤,執行")

finnally:

print("不管有沒有錯,都執行finnally")

attributeerror 試圖訪問乙個物件沒有的樹形,比如foo.x,但是foo沒有屬性x

ioerror 輸入/輸出異常;基本上是無法開啟檔案

importerror 無法引入模組或包;基本上是路徑問題或名稱錯誤

indentationerror 語法錯誤(的子類) ;**沒有正確對齊

indexerror 下標索引超出序列邊界,比如當x只有三個元素,卻試圖訪問x[5]

keyerror 試圖訪問字典裡不存在的鍵

keyboardinterrupt ctrl+c被按下

nameerror 使用乙個還未被賦予物件的變數

syntaxerror python**非法,**不能編譯(個人認為這是語法錯誤,寫錯了)

typeerror 傳入物件型別與要求的不符合

unboundlocalerror 試圖訪問乙個還未被設定的區域性變數,基本上是由於另有乙個同名的全域性變數,

導致你以為正在訪問它

valueerror 傳入乙個呼叫者不期望的值,即使值的型別是正確的

1

arithmeticerror

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 更多異常

view code

s1 = 'hello'

try:

int(s1)

except valueerror, e: #python2.7的寫法

print e

class gaoerror(exception):  #定義乙個異常類,繼承exception

def __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 大家要學會看直譯器...