一 錯誤和異常
?錯誤分兩種:
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 #!/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中,錯誤出發的異常如下
?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
版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。
工作时间:8:00-18:00
客服电话
电子邮件
admin@qq.com
扫码二维码
获取最新动态