python raise


當程序出現錯誤,python會自動引發異常,也可以通過raise顯示地引發異常。一旦執行了raise語句,raise后面的語句將不能執行
 
演示raise用法
try:
     s = None
     if s is None:
         print "s 是空對象"
         raise NameError     #如果引發NameError異常,后面的代碼將不能執行
     print len(s)  #這句不會執行,但是后面的except還是會走到
except TypeError:
     print "空對象沒有長度"
 
s = None
if s is None:
    raise NameError 
print 'is here?' #如果不使用try......except這種形式,那么直接拋出異常,不會執行到這里

 

觸發異常

我們可以使用raise語句自己觸發異常

raise語法格式如下:

raise [Exception [, args [, traceback]]]

語句中 Exception 是異常的類型(例如,NameError)參數標准異常中任一種,args 是自已提供的異常參數。

最后一個參數是可選的(在實踐中很少使用),如果存在,是跟蹤異常對象。

實例

一個異常可以是一個字符串,類或對象。 Python的內核提供的異常,大多數都是實例化的類,這是一個類的實例的參數。

定義一個異常非常簡單,如下所示:

def functionName( level ):
    if level < 1:
        raise Exception("Invalid level!", level)
        # 觸發異常后,后面的代碼就不會再執行

注意:為了能夠捕獲異常,"except"語句必須有用相同的異常來拋出類對象或者字符串

例如我們捕獲以上異常,"except"語句如下所示:

try: 正常邏輯 except Exception,err: 觸發自定義異常 else: 其余代碼

實例

#!/usr/bin/python
# -*- coding: UTF-8 -*-
# 定義函數
def mye( level ):
    if level < 1:
        raise Exception,"Invalid level!"
        # 觸發異常后,后面的代碼就不會再執行
try:
    mye(0)            # 觸發異常
except Exception,err:
    print 1,err
else:
    print 2

 

執行以上代碼,輸出結果為:

$ python test.py 1 Invalid level!

python3.6以后 改為
def mye( level ):
    if level < 1:
        raise Exception("Invalid level!")
        # 觸發異常后,后面的代碼就不會再執行
try:
    mye(0)            # 觸發異常
except Exception as err:
    print(1,err)
else:
    print(2)

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM