日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python异常捕获_python 捕获异常

發布時間:2024/7/5 python 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python异常捕获_python 捕获异常 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

異常:由于代碼的邏輯或者語法錯誤導致的程序中斷。

在學習Python的過程當中,大家一定要區分清楚異常和布爾值False

布爾值的False只是一個值,通常代表的是一個條件的不成立,常用于邏輯判斷

比如:

1 num = 2

2 print(num > 3)3 if num > 3:4 print("num > 3")

異常指的是由于代碼的邏輯或者語法錯誤導致的程序中斷

比如:

1 num = 2

2 2+"2"

了解了上面的邏輯之后,我們來看看大家在代碼當中經常出現的幾種錯誤,和常見原因

錯誤類型

錯誤名稱

錯誤解釋

SyntaxError

語法錯誤

是語法導致的錯誤,通常的報錯是 invalid syntax,比如:縮進語句塊不加冒號,遇到這種錯誤,就要詳細的檢查自己的的語句了

IndexError

索引錯誤

是索引引用導致的錯誤,通常的報錯是 list out of range,遇到這個錯誤就要認真的檢查自己是不是取了一個超出序列長度的索引

NameError

命名錯誤

是變量命名導致的錯誤,通常的報錯是 no model named ... ,遇到這個錯誤就要查看自己的變量了,初學者要注意是不是字符串沒有加引號

AttributeError

屬性錯誤

是調用對象屬性時候導致的錯誤,通常報錯是 ... object has no attribute ... 遇到這個錯誤就要查看自己的對象是不是調用了不存在的屬性了

KeyError

鍵錯誤

是字典取值時候導致的錯誤,字典沒有這個鍵

TypeError

類型錯誤

是對對象進行非本類型操作時候導致的,沒有固定的報錯,常見的有 ... not callabel ,遇到這種錯誤,要認真梳理自己對對象的操作了,比如,非函數對象加括號調用

當然異常的類型還有好多,在這就不一一列舉了,我們來看捕獲異常的關鍵字

捕獲異常最簡單的寫法如下

try: #嘗試執行縮進下面的報錯

1+"1"

except: #如果發生錯誤,打印Error

print("Error")>>> Error

這里我們嘗試執行 1+“1”,如果可以執行就執行,如果發生錯誤就執行下面的代碼。

但是,在工作當中,這樣的代碼并沒有太好的效果,我們通過這段代碼既無法實現錯誤內容的輸出,也不能實現錯誤的處理,只是讓程序不報錯的執行了下去,這個顯然不好使。

所以我們首先要考慮的就是如何獲取具體的錯誤內容,例子如下:

例1:

try:1+"1"

exceptException as e:print(e)>>> unsupported operand type(s) for +: 'int' and 'str'

這里我們用到了兩個之前沒有用到過的關鍵詞:

1、Exception 所有的錯誤

2、as 別名

所以例1代碼的含義就是嘗試執行 1+"1”,如果只成功就可以,否則無論發生任何錯誤,都把這個錯誤返回的內容起別名為e,在下面輸出出來。在這里要注意的一點就是,e可以被打印但是不是字符串對象,所以不可以進行任何字符串操作。

try:1+"1"

exceptException as e:print(type(e))>>>

例2:

try:1+"1"

exceptTypeError as e:print(e)>>> unsupported operand type(s) for +: 'int' and 'str'

這里和上面的例1唯一的不同就在于except后面跟了具體的錯誤類型,意思很明確,當發生TypeError的時候,我進行如下處理,至于其他錯誤,就讓他報錯去吧。

當然這樣的說法有點隨性,認真的查看,著多種錯誤類型的捕獲異常給我們對同一語句進行不同的異常處理帶來了很大的遍歷性,畢竟不是所有的錯誤都可以pass!

了解了上面的報錯,那么接下來要認真研究的就是捕獲異常的另外兩個關鍵字:else 和finally

首先是他兩的邏輯

else:代表在try執行成功之后,進行執行,放在except的后面

finally:代表最后,無論執行try成功還是失敗,都會執行。作為最后的收尾

了解之后,我們來查看我們例子

例1:

1 try:2 1+"1"

3 exceptException as e:4 print(e)5 else:6 print("it is ok")7 finally:8 print("ok it's over")9

10 >>> unsupported operand type(s) for +: 'int' and 'str'

11 >>> ok it's over

例2:

1 try:2 1+1

3 exceptException as e:4 print(e)5 else:6 print("it is ok")7 finally:8 print("ok it's over")9

10 >>> it isok11 >>> ok it's over

在例1當中,我們執行try失敗,所以except和finally執行,在例子2當中,我們執行try成功,所以else和finally成功。

else和finally的出現極大的方便了我們對捕獲異常和異常處理的完整流程描述,不如下面的例子

1 importpymysql2 try:3 #嘗試連接數據庫

4 connect =pymysql.connect(5 host = "localhost",6 user = "root",7 password = "123",8 database = "outTest"

9 )10 exceptException as e:11 #失敗輸出錯誤

12 print(e)13 else:14 #如果成功進行數據查詢

15 cursor =connect.cursor()16 cursor.execute("select * from login")17 all_data =cursor.fetchall()18 print(all_data)19 finally:20 #不論如何進行結束通知

21 print("執行結束")

到這里,可能好多讀者覺得捕獲異常到此結束,其實并不是這樣,還可以有一個好的建議給到大家,我們可以嘗試使用。先看下面的兩個案例:

例1:

try:1+"1"

exceptException as e:print(e)>>> unsupported operand type(s) for +: 'int' and 'str'

例2:

try:1+"1"

exceptException as e:

error=traceback.format_exc()print(error)>>>Traceback (most recent call last):

File"C:/Users/bian/Desktop/TestProject/twistedProject/twistedProject.py", line 67, in

1+"1"TypeError: unsupported operand type(s)for +: 'int' and 'str'

例1和例2同樣實現了捕獲異常的功能,但是例子2的返回更加的專業,并且利于調試

總結

以上是生活随笔為你收集整理的python异常捕获_python 捕获异常的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。