python try異常處理

錯誤和異常:
    錯誤:
        nameerror           未聲明、初始化對象
        indexerror          序列中沒有此索引
        syntaxerror         語法錯誤
        keyboardinterrupt   用戶中端執行
        EOFEror             沒有內建輸入,到達EOF標記
        IOErrot             輸入/輸出操作失敗

    import time

    for i in range(1,11):
        print(i)
        try:                        #把可能發生錯誤的代碼放入try裏面,
            time.sleep(1)
        except KeyboardInterrupt:   #當產生KeyboardInterrupt
            print('Bey-Bey')

    #事後申請原諒比事前申請權限容易
    try:
        number = int(input('number:'))
        result = 100 / number

    except (ValueError, ZeroDivisionError) as e:
        print('errot', e)
    except (KeyboardInterrupt, EOFError):
        print('\nBey-Bey')
    else:                   #沒有異常時執行的語句
        print(result)
    finally:                #不論有沒有異常都會執行的語句
        print('done')

觸發異常:
    raise語句:
        想要引發異常,最簡單的形式就是輸入關鍵字raise,後面跟要引發的異常的名稱
        執行raise語句時,python會創建指定的異常類的一個對象
        raise語句還可以指定對異常對象進行初始化的參數

    def set_age(name, age):
        if not 0 < age < 150:
            raise ValueError('age out of range.')
        print('%s is %s years olg') % (name, age)

    #斷言:
        斷言是一句必需等價於布爾值爲真的判斷
        此外,發生異常也意味着表達式爲假
    def set_age2(name, age):
        assert  0 < age < 150, 'age out of range'  #當表達式爲真時,正常指定print語句,爲假時執行報錯語句'age out of range' 
        print('%s is %s years lod' % (name, age))

    if __name__ == '__main__':
        set_age('bob', 222)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章