中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

python異常與錯誤區別是什么

發布時間:2020-09-10 10:17:13 來源:億速云 閱讀:286 作者:小新 欄目:編程語言

python異常與錯誤區別是什么?這個問題可能是我們日常學習或工作經常見到的。希望通過這個問題能讓你收獲頗深。下面是小編給大家帶來的參考內容,讓我們一起來看看吧!

錯誤和異常概念

錯誤:

1.語法錯誤:代碼不符合解釋器或者編譯器語法

2.邏輯錯誤:不完整或者不合法輸入或者計算出現問題

異常:執行過程中出現萬體導致程序無法執行

1.程序遇到邏輯或者算法問題

2.運行過程中計算機錯誤(內存不夠或者IO錯誤)

錯誤和異常區別

錯誤:

代碼運行前的語法或者邏輯錯誤,

語法錯誤在執行前修改,邏輯錯誤無法修改

異常分為兩個步驟:

1.異常產生,檢查到錯誤且解釋器認為是異常,拋出異常;

2.異常處理,截獲異常,忽略或者終止程序處理異常

Python常見錯誤

常見錯誤:ipython下

1. a : NameError

在沒有定義一個變量的時候直接引用

2. if True : SyntaxError

語法錯誤

3. f = open('1.txt') : IOError

試圖打開一個不存在的文件的時候

4. 10/0 : ZeroDivisionError

5. a = int('dd') : ValueError

進行強制類型轉換的時候遇到的錯誤

try--except異常處理(1)

try-except:異常處理

try:
    try_suite
except Exception [, e]:
    exception_block

1.try用來捕獲try_suite中的錯誤,并且將錯誤交給except處理

2.except用來處理異常,如果異常處理和設置捕獲異常一致,使用exception_block處理異常

例:

try:
    a
except Exception, e:
    print e

try-except捕獲異常分析:

Case 1:

try:
    undef
except:
    print 'catch an except'

Case 2:

try:
    if undef
except:
    print 'catch an except'

case 1:可以捕獲異常,因為是運行時錯誤

case 2:不能捕獲異常,因為是語法錯誤,運行前錯誤

Case 3:

try:
    undef
except NameError, e:
    print 'catch an except', e
Case 4:
try:
    undef
except IOError, e:
    print 'catch an except', e

case 3:可以捕獲異常,因為設置捕獲NameError異常

case 4:不能捕獲異常,因為設置IOError,不會處理NameError

try--except異常處理(2)

try-except:處理多個異常

try:
    try_suite
except Exception1 [e]:
    exception_block1
except Exception2 [e]:
    exception_block2
except ExceptionN [e]:
    exception_blockN

try-except--else使用

try:
    try_suite
except Exception1 [e]:
    exception_block1
else:
    none_exception

如果沒有異常,執行else語句中的代碼

try--finally語句

try-finally語句:

try:
    try_suite
finally:
    do_finally

1.如果try語句沒有捕獲錯誤,代碼執行do_finally語句

2.如果try語句捕獲錯誤,程序首先執行do_finally語句,然后將捕獲到的錯誤交給python解釋器處理

try-finally語句:

規則:try-finally無論是否檢測到異常,都會執行finally代碼

作用:為異常處理事件提供清理機制,用來關閉文件或者釋放系統資源

try-except-finally使用:

try:
    try_suite
except:
    do_except
finally:
    do_finally

1.若try語句沒有捕獲異常,執行完try代碼段后,執行finally

2.若try捕獲異常,首先執行except處理錯誤,然后執行finally

try-except-else-finally使用:

try:
    try_suite
except:
    do_except
else:
    do_else
finally:
    do_finally

1.若try語句沒有捕獲異常,執行完try代碼塊后,執行else代碼塊,最后執行finally

2.若try捕獲異常,首先執行except處理錯誤,然后執行finally

with語句

with語句:

with context [as var]:

with_suite

1.with語句用來代替try-except-finally語句,是代碼更加簡潔;

2.context表達式返回是一個對象;

3.var用來保存context返回對象,單個返回值或者元祖;

4.with_suite使用var變量來對context返回對象進行操作

……

raise和assert

raise語句

raise語句用于主動拋出異常

語法格式:raise [exception [, args]]

exception: 異常類

args: 描述異常信息的元組

例:

raise TypeError
raise TypeError, 'Test Error'
raise IOError, 'File Not Exist'

assert語句

斷言語句:assert語句用于檢測表達式是否為真,如果為假,引發AssertionError錯誤;

語法格式:assert expression [, args]

expression:表達式

args:判斷條件的描述信息

例:

assert 7==6
assert 0, 'Test Error'

Python標準和自定義異常

標準異常:python內建異常,程序執行前就已經存在

自定義異常:

1.python允許自定義異常,用于描述python中沒有涉及的異常情況

2.自定義異常必須繼承Exception類

3.自定義異常只能主動觸發

自定義異常示例:

class FileError(IOError):
    pass
raise FileError, 'Test FileError'
 
class CustomError(Exception):
    def __init__(self, info):
        Exception.__init__(self)
        self.errorinfo = info
    def __str__(self):
        return 'CustomError: %s' % self.errorinfo
try:
    raise CustomError('test CustomError')
except CustomError, e:
    print 'Error Info : %s' % e

感謝各位的閱讀!看完上述內容,你們對python異常與錯誤區別是什么大概了解了嗎?希望文章內容對大家有所幫助。如果想了解更多相關文章內容,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

崇礼县| 体育| 旬阳县| 股票| 延长县| 育儿| 长沙市| 湖口县| 内丘县| 清新县| 清丰县| 额济纳旗| 城步| 利辛县| 康马县| 台北县| 青岛市| 长武县| 乌审旗| 克山县| 全南县| 莱西市| 菏泽市| 大田县| 莱州市| 宜兴市| 泰顺县| 锡林郭勒盟| 左云县| 龙陵县| 连州市| 玉田县| 玉溪市| 枣庄市| 岐山县| 汝阳县| 卓资县| 蕉岭县| 家居| 聊城市| 芦山县|