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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

异常处理与断言

發布時間:2024/10/12 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 异常处理与断言 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1、異常與錯誤

    錯誤 分為語法錯誤,邏輯錯誤;語法錯誤過不了python的解釋器,不符合python語言的規則,邏輯錯誤可通過解釋器,但是輸出錯誤

----------------->語法錯誤

1 def test() 2 pass 3 —————————— 4 File "E:/File/h.py/venv/新.py", line 17 5 def test() 6 ^ 7 SyntaxError: invalid syntax

?

----------------->邏輯錯誤

1 x=0 2 y=5 3 print(y/x) 4 ------------------- 5 Traceback (most recent call last): 6 File "E:/File/h.py/venv/新.py", line 19, in <module> 7 print(y/x) 8 ZeroDivisionError: division by zero

? 異常:程序運行過程中所出現的問題

2、標準異常類型

ZeroDiviceError:被除數寫成了0

?

NameError:變量未定義

?

TypeError:不同類型數據進行相加

?

IndexError:超出索引范圍

?

KeyError:沒有對應名稱的鍵

?

ValueError:將字符型數據轉換成整型數據

?

AttributeError:對象沒有對應名稱的屬性

?

3、異常處理(try--except)

  try--except是處理異常的一種手段。例如input輸入字符串強制轉化為int時,可能會發生異常,若輸入數字字符串,不會觸發異常,若輸入字母字符串,如何強制轉化為int。

1 try: 2 age=input(">>>>") 3 age=int(age) 4 print(age) 5 except ValueError as e: 6 print('valueerror') 7 print(e) 8 except KeyError as e: 9 print('keyerror') 10 print(e) 11 --------------------------------- 12 >>>>alex 13 valueerror 14 invalid literal for int() with base 10: 'alex'

  可以看到,當輸入字符串‘alex’時,并不能把他轉化為int,會觸發異常。程序從try直接跳轉到except中,判斷異常屬于哪個異常類型與其匹配,可以看到,其為ValueError,跳轉到對應的except,執行相應的代碼塊,需要注意的是as意外著將異常當作e,可打印e,看到異常;

1 try: 2 age=input(">>>>") 3 age=int(age) 4 print(age) 5 # except ValueError as e: 6 # print('valueerror') 7 # print(e) 8 except KeyError as e: 9 print('keyerror') 10 print(e) 11 except Exception as e: 12 print('我可是什么異常都可發現的') 13 print(e) 14 print('我還在執行哦') 15 ----------------------------16 >>>>sad 17 我可是什么異常都可發現的 18 invalid literal for int() with base 10: 'sad' 19 我還在執行哦

!!!Exception異常類型可接受任何類型的異常,當異常try——except執行完,不會影響到后面代碼的執行

!!!python找異常類型是從第一個except開始找,當找到了即整個except結束,即使可能后面有與之匹配的異常

1 try: 2 age=input(">>>>") 3 age=int(age) 4 print(age) 5 except ValueError as e: 6 print('valueerror') 7 print(e) 8 except KeyError as e: 9 print('keyerror') 10 print(e) 11 except Exception as e: 12 print('我可是什么異常都可發現的') 13 print(e) 14 print('我還在執行哦') 15 -----------------------------16 >>>>sad 17 valueerror 18 invalid literal for int() with base 10: 'sad' 19 我還在執行哦

  當找到第一個ValueError即停止,即使后面有接受所有異常類型的Exception;;;

?  當try當中拋出異常時,try異常后面的代碼并不會執行,會跳轉到except中

4、try--except-else與finally

  

1 try: 2 age=input(">>>>") 3 age=int(age) 4 print(age) 5 except ValueError as e: 6 print('valueerror') 7 print(e) 8 except KeyError as e: 9 print('keyerror') 10 print(e) 11 # except Exception as e: 12 # print('我可是什么異常都可發現的') 13 # print(e) 14 else: 15 print('我是else') 16 finally: 17 print('我的作用是為異常做善后清理') 18 -------------------------------19 >>>>alex 20 valueerror 21 invalid literal for int() with base 10: 'alex' 22 我的作用是為異常做善后清理

當拋出異常時,valueerror來接異常,執行后面代碼,但是else代碼并未執行,fnally執行了。沒有對比就沒有發現!

###當輸入123時輸出 --------------->>>>123 123 我是else 我的作用是為異常做善后清理

當輸入123時,代碼并未觸發異常,自然不會觸發except,但是else,finally都觸發了!

  !!!try——except——else:當try中無異常拋出的時候,else代碼會執行

  !!!try——except——finally:無論try是否觸發異常,都會執行finally下的代碼,finally的代碼作用是善后,清理作用;例如當try中有異常有關文件的操作時,觸發了異常,但文件并未close,finally作用就能體現了;

5、raise主動觸發異常

  我們可以使用raise 異常類型(“參數”)來主動觸發,代碼執行到此,會報異常信息參數

1 if 1==1: 2 raise KeyError("出錯了") 3 print('我能不能執行呢') 4 ——————--------------- 5 Traceback (most recent call last): 6 File "D:/MyPython/day2/venv/bokeyuan.py", line 51, in <module> 7 raise KeyError("出錯了") 8 KeyError: '出錯了'

?

  當然不會執行后面代碼了

6、斷言(assert)

  斷言是python用來檢查一個語句,如果他為真,不做任何工作,如果為假,會報錯

1 assert 1==2 2 assert 1==1 3 -----------------------》》 4 Traceback (most recent call last): 5 File "D:/MyPython/day2/venv/bokeyuan.py", line 54, in <module> 6 assert 1==2 7 AssertionError

?

?

?

?

?

 

轉載于:https://www.cnblogs.com/XiaoJin0/p/10176398.html

總結

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

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