2019-06-01 異常處理

#異常發(fā)生后 程序就結(jié)束了
#若輸入一個(gè)字母 則拋出一個(gè)異常
#opt =int( input('輸入整數(shù)'))
#print(opt)
#except Type:處理指定類型的異常
#except (Type1,Type2,Type3):同時(shí)處理這三種異常
#若想獲得異常數(shù)據(jù),仍可使用as語(yǔ)句
opt =None
try:
    opt = int(input('輸入整數(shù)'))
except (ValueError,KeyError):#所有的錯(cuò)誤都會(huì)以此為出口 處理所有異常
    print('你輸入的不是一個(gè)數(shù)')
'''
只是值錯(cuò)誤的出口
except ValueError as e:
print(e)
'''
print(opt)
"""
try :
    pass
except 異常類型1:
    pass
except 異常類型2:
    pass
except (yichang1,2,3):
    pass
"""

定義這種方式捕捉異常時(shí),一定要先寫具體的異常,再寫普遍性的異常
所有的異常,繼承自Exception

#try :
#except:
#發(fā)生異常時(shí)執(zhí)行
#else:
#未發(fā)生異常時(shí)執(zhí)行
#finally;
#    有無(wú)異常均會(huì)執(zhí)行
#可以只有try。。finally 語(yǔ)句
#finally 一般用于釋放資源
#異常的傳遞
#異常發(fā)生后會(huì)傳遞給方法(函數(shù))的調(diào)用者A 若A有捕捉到該異常 則按捕捉機(jī)制處理
#否則會(huì)層層上傳  傳遞到程序的起始方法(函數(shù))
#最終會(huì)傳遞到python解析器 報(bào)錯(cuò) 此時(shí)就簡(jiǎn)單的終止程序
"""
def func1():
    a=0
    print(4/a)
def func2():
    try:
        func1()
    except:
        print('除數(shù)不為0')
func2()
#手動(dòng)拋出異常raise
def func3():
    print('hhh')
    raise ZeroDivisionError()
func3()
"""

自定義異常

class ParamInvalidException(Exception):
    def __init__(self,code,msg):
        self.code=code
        self.msg=msg
def login(username,pwd):
    if len(username)<6:
        raise ParamInvalidException(100,'用戶名長(zhǎng)度小于6')
    if username !='zs':
        raise ParamInvalidException(101,'用戶名錯(cuò)誤')
    print('登錄成功')
try:
    login('zs',78)
    print('ddd')
except ParamInvalidException as e:
    print (e.code,e.msg)
    raise e

程序發(fā)生異常的處理:
是否是可控的 ?無(wú)論是否可控,先記錄一下 若不可控 則忽略不管
若可控

try :
    pass
except Exception:
    #先記錄異常
#能處理則處理 若不能處理 raise
    pass
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容