1. 程式人生 > >python學習筆記(十五)異常處理

python學習筆記(十五)異常處理

關鍵字 .exe strip support 異常 解析器 輸入 rod ()

python解析器去執行程序,檢測到了一個錯誤時,觸發異常,異常觸發後且沒被處理的情況下,程序就在當前異常處終止,後面的代碼不會運行,所以你必須提供一種異常處理機制來增強你程序的健壯性與容錯性

例如,我們定義一個函數

first = input(請輸入除數:)
second = input(請輸入被除數:)
first = int(first)
second = int(second)
res = first/second
li = [1,2,3,4]
print(li[5])

如果除數second=0,那代碼就會拋異常,ZeroDivisionError: division by zero

,除數是不能為0的。

如果除數輸入是字符串,那麽代碼也會拋異常,TypeError: unsupported operand type(s) for /: ‘int‘ and ‘str‘

這時就需要捕捉異常了,當除數為0時提示用戶所傳參數不對。異常處理使用的是try .... except.....關鍵字。

first = input(請輸入除數:)
second = input(請輸入被除數:)
try:
    first = int(first)
    second = int(second)
    res = first/second
except ValueError as e: #這個e代表錯誤信息,如果上面的兩行代碼出現了 ValueError這個錯
    print(e)
    print(
請輸入整數) except ZeroDivisionError as e: print(e) print(除數不能為0)

當異常種類很多的時候,我們可以統一寫為except Exception as e:

first = input(請輸入除數:)
second = input(請輸入被除數:)
try:
    first = int(first)
    second = int(second)
    res = first/second
except Exception as e:   #上面代碼出異常的時候走這裏,
    print(e)
    print(
出錯了。。。。。)
else: #沒有出錯,也不是必須寫的
print(‘並沒有出錯‘)#這個是沒有異常的時候走
print(res)
finally:#不管出錯或者沒有出錯都會執行它,也不是必須寫的。
print(‘我是finally‘)

現在我們完善一下操作數據庫的函數

1.數據庫在連接不成功時會拋異常

2.在執行sql的時候,如果sql語句寫的不正確也會拋異常

def my_db2(sql):
    try:
        coon = pymysql.connect( **MYSQL_INFO )
    except Exception as res:
        print(數據庫連接失敗了)
        return 數據庫連接失敗了
    cur = coon.cursor()  # 建立遊標
    try:
        cur.execute(sql)#執行sql
    except Exception as res:
        print(sql出錯,sql是%s%sql)
        return sql出錯
    else:
        if sql.strip()[:6].upper()==SELECT:
            res =  cur.fetchall()
        else:
            coon.commit()
            res = ok
    finally:
        cur.close()
        coon.close()
    return res

python學習筆記(十五)異常處理