天天看點

python異常處理之自定義一個自己的異常

python 異常處理之自定義一個自己的異常

# -*- coding:utf-8 -*-
#異常處理:必須要有try和一個except(可以有多個)
#		else(如果except語句都沒有執行,才會執行) 可選**
#		finally(不管結果怎麼樣最後都會執行) 可選
# 	結構:
try:
  	 number = int(input('請輸入數字:'))
except ValueError as er:
    print('輸入值異常',er)
except NameError as er:
    print('輸入異常',er)
except:
    print('未知錯誤')
else:
    print('沒有錯誤!')
finally:
    print('end')

#----------^-^我是分割線^-^----------------
 class MyExcept1(Exception):   ##自定義一個異常,繼承了Exception

    def __init__(self,value):
        self.value = value
        
    def __str__(self):     ##傳回列印資訊
        return self.value

class MyExcept2(Exception):   ##自定義一個異常,繼承了Exception

    def __init__(self,value):
        self.value = value
        
    def __str__(self):
        return self.value


#建立一個Bank類
class Bank(object):

    def __init__(self):
        self.blance = 500     ##金額大小
        
    def withDrawal(self,number):  		 ##定義判斷方法
        if self.blance < number:         ##如果要取的錢大于你的金額
            raise MyExcept1('你沒那麼多錢!!')      ###抛出異常,并給出提示資訊
        elif number < 0:                 ##如果要取的錢為負數
            raise MyExcept2('取款不能為負數  !  !')       ###抛出異常,并給出提示資訊
        self.blance -= number            ###正常取錢的情況
        return self.blance                   ###傳回剩下的金額

# eg:取錢執行個體
my = Bank() 
num = int(input('請輸入取款金額:'))
try:
    money=my.withDrawal(num)
    print('你還剩餘:',money)
except MyExcept1 as i:
    print(i)
except MyExcept2 as u:
    print(u)