開發語言python,python中異常處理的兩種方式_Python 之異常處理

 2023-10-04 阅读 28 评论 0

摘要:一 錯誤和異常 ?錯誤分兩種: 1、語法錯誤 開發語言python?1 #!/usr/bin/env python 2 #-*- coding:utf-8 -*- 3 #舉列 4 print('hello world' #少) python在哪里編程,5 6 def test: #少() 7 print('hello world') 語法錯誤舉列 python的特點。2、邏輯

一 錯誤和異常

?錯誤分兩種:

1、語法錯誤

ContractedBlock.gif

ExpandedBlockStart.gif

開發語言python?1 #!/usr/bin/env python

2 #-*- coding:utf-8 -*-

3 #舉列

4 print('hello world' #少)

python在哪里編程,5

6 def test: #少()

7 print('hello world')

語法錯誤舉列

python的特點。2、邏輯錯誤

ContractedBlock.gif

ExpandedBlockStart.gif

1 #!/usr/bin/env python

2 #-*- coding:utf-8 -*-

3

python異常處理、4 #舉列

5 print(1/0) #邏輯錯誤,被除數不能為0

6

7 l = [1, 2]8 print(l[10]) #超出索引范圍;從0開始計數

python中divmod,9

10

11 age = input('請輸入你的年齡:')12 age = int(age) #若用戶輸入字符串,報邏輯錯誤,字符串無法轉int

邏輯錯誤舉列

python中。?什么是異常

異常就是程序運行時發生錯誤的信號,在Python中,錯誤出發的異常如下

1504448-20190220110417220-1472527934.png

?Python中的異常種類

在Python中不同的異常可以用不同的類型(Python中統一了類與類型,類型即使類)去標識,不同的類對象標識不同的異常,一個異常標識一種錯誤。

python程序、1 AttributeError:試圖訪問一個對象沒有的屬性,比如foo.y,但是foo沒有屬性y2 IOError:輸入/輸出異常;基本上是無法打開文件3 ImportError:無法引入模塊或包;基本上是路徑問題或名稱錯誤4 IndentationError:語法錯誤(的子類);代碼沒有正確對齊5 IndexError:下標索引超出序列邊界6 KeyError:試圖訪問字典里不存在的鍵7 KeyBoardInterrupt:ctrl+c被按下(在cmd命令下)8 NameError:使用一個還未被賦予對象的變量9 SyntaxError:Python代碼非法。代碼不能編譯10 TypeError:傳入對象類型與要求的不符合11 UnboundLocalError:試圖訪問一個還未被設置的局部變量,基本上是由于另有一個同名的全局變量,才導致你以為正在訪問它12 ValueError:傳入一個調用者不期望的值,即使值的類型是正確的

二 異常處理

2.1 什么是異常處理?

Python解釋器檢測到錯誤,觸發異常(也允許程序員自己觸發異常),程序員編寫特定的代碼,專門用來捕捉這個異常(這段代碼與程序邏輯無關,與異常處理有關),如果捕捉成功則進入另外一個處理分支,執行你為其定制的邏輯,使程序不會崩潰,這就是異常處理。

2.2 為何要進行異常處理?

Python解釋器去執行程序,檢測到了一個錯誤時,觸發異常,異常觸發后且沒被處理的情況下,程序就在當前異常處終止,后面的代碼不會運行,誰會去用一個運行著就突然崩潰的軟件。所以你必須提供一種異常處理機制來增強你程序的健壯性與容錯性。

2.3 如何進行異常處理?

首先,異常是由程序的錯誤引起的,語法上的錯誤跟異常處理無關,必須在程序運行前就修正。

一:使用if判斷

二:Python為每一種異常定制了一個類型,然后提供了一種特定的語法結構用來進行異常處理

part1:基本語法

1 try:2 被檢測的代碼塊3 except異常類型:4 try中一旦檢測異常,就執行except中的代碼塊

part2:異常類只能用來處理指定的異常情況,如果非指定異常則無法處理。

1 #!/usr/bin/env python

2 #-*- coding:utf-8 -*-

3 try:4 age = 'alex'

5 int(age)6 exceptIndexError as e: # Exception as e7 print(e)8

9 '''

10 打印結果如下:11 D:\Python\insert3\python3.exe H:/pythons3_/2019-02-20/錯誤與異常.py12 Traceback (most recent call last):13 File "H:/pythons3_/2019-02-20/錯誤與異常.py", line 5, in 14 int(age)15 ValueError: invalid literal for int() with base 10: 'alex'16 '''

part3:異常的其他結構(包括多分支Except)

1 #!/usr/bin/env python

2 #-*- coding:utf-8 -*-

3 try:4 age = 15

5 int(age)6 exceptValueError as e:7 print(e)8 exceptIndexError as e:9 print(e)10 exceptException as e:11 print(e)12 else:13 print('try內代碼塊沒有異常則執行我')14 finally:15 print('無論異常與否,都會執行該模塊,通常是進行清理工作')16

17 '''

18 打印結果如下:19 D:\Python\insert3\python3.exe H:/pythons3_/2019-02-20/錯誤與異常.py20 try內代碼塊沒有異常則執行我21 無論異常與否,都會執行該模塊,通常是進行清理工作22 '''

part4:主動觸發異常

1 #!/usr/bin/env python

2 #-*- coding:utf-8 -*-

3 name = 'alex'

4 try:5 raise TypeError('類型錯誤')6 exceptException as e:7 print(e)

part5:斷言

1 #!/usr/bin/env python

2 #-*- coding:utf-8 -*-

3 #assert 條件

4 assert 1 == 2 #不報錯

5 assert 2 == 2 #報錯;<==> if 2==2: raise AssertionError

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/5/113624.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息