1. 程式人生 > >PYTHON 異常的使用(2)

PYTHON 異常的使用(2)

#簡單一場案例3
try:
    num=int(input('please input your number'))
    rst=100/num
    print('計算結果為{0}'.format(rst))
except ZeroDivisionError as e:
    print('counter problem')
    print(e)
except NameError as e:
    print('名字起錯了')
    print(e)
    exit()
except AttributeError as e:
    print('好像屬性有問題')
    print(e)
    exit()
#所有異常都是繼承自Exception
#此語句任何的異常都會被攔截
#並且這句話一定要是最後一個
except Exception as e:
    print('具體錯誤不知道')

-注:如果知道的具體的錯誤需要寫在前面
     在異常繼承關係中,越是子類的異常,越要往前放,父類的異常需要往後放


-使用者手動引發的異常
    某些情況下使用者希望自己引發一個異常的時候使用
    raise 關鍵字來引發異常
#raise案例
try
    print('我愛哈爾濱')
    print('前方到站哈爾濱')
    #手動異常語法
    raise ValueError
    print('賊冷')
except NameError as e:
    print('NameError')
except ValueError as e:
    print('ValueError')
except Exception as e:
    print('具體錯誤不知道')
finally:
    print('over')
>>我愛哈爾濱
>>前方到站哈爾濱
>>valueError
>>over
#raise案例-2
#此處還可以自己定義異常
#但是自己定義的異常必須是系統異常的子類
class PandaError(ValueError):
    pass
try
    print('我愛哈爾濱')
    print('前方到站哈爾濱')
    #手動異常語法
    raise PandaError
    print('賊冷')
except NameError as e:
    print('NameError')
except PandaError as e:
    print('PandaError')
except ValueError as e:
    print('ValueError')
except Exception as e:
    print('具體錯誤不知道')
finally:
    print('over')
>>我愛哈爾濱
>>前方到站哈爾濱
>>PandaError
>>over

-else語句案例
try:
    num=int(input('please input your number'))
    rst=100/num
    print('計算結果為{0}'.format(rst))
except Exception as e:
    print('出錯')
else:
    print('無措')
finally:
    print('over')
>>please input your number50
>>計算結果為2
>>無措

-關於自定義異常問題(瞭解)
    如果是自定義異常則推薦自定義異常
    在自定義異常的時候一般要有一下內容
        自定義異常發生異常的異常程式碼
        發生異常後的提升
        自定義發生異常的行數