1. 程式人生 > >Python2語法簡記(9):異常處理

Python2語法簡記(9):異常處理

9 異常處理

try…except…else語句

try:
    fh = open("testfile", "w")
    fh.write("這是一個測試檔案,用於測試異常!!")
except IOError:  # 可以帶多種異常型別except(excep1, excep2),或者不帶任何異常型別
    print "Error: 沒有找到檔案或讀取檔案失敗"
else:    # else是可選的。沒有異常時執行
    print "內容寫入檔案成功"
    fh.close()

try…finally語句
try…finally 語句無論是否發生異常都將執行最後的程式碼。

try:
    fh = open("testfile", "w")
    try:
        fh.write("這是一個測試檔案,用於測試異常!!")
    finally:
        print "關閉檔案"
        fh.close()            # 這裡如果異常再次被觸發,將異常遞交給上層的try,執行上層的except
except IOError:
    print "Error: 沒有找到檔案或讀取檔案失敗"

異常引數:except ValueError, Argument:

# 定義函式
def temp_convert(var):
    try:
        return int(var)
    except ValueError, Argument:
        print "引數沒有包含數字\n", Argument

# 呼叫函式
temp_convert("xyz");

執行結果:
引數沒有包含數字
invalid literal for int() with base 10: ‘xyz’

觸發異常:通過raise。例:raise Exception, "Invalid level!"
通過raise語句自己觸發異常

# 定義函式
def mye( level ):
    if level < 1:
        raise Exception,"Invalid level!"
        # 觸發異常後,後面的程式碼就不會再執行
try:
    mye(0) # 觸發異常
except Exception,err:
    print 1,err
else:
    print 2

執行結果:
1 Invalid level!