python異常處理、自定義異常、斷言原理與用法分析
本文實(shí)例講述了python異常處理、自定義異常、斷言原理與用法。分享給大家供大家參考,具體如下:
什么是異常:
- 當(dāng)程序遭遇某些非正常問(wèn)題的時(shí)候就會(huì)拋出異常:比如int()只能處理能轉(zhuǎn)化成int的對(duì)象,如果傳入一個(gè)不能轉(zhuǎn)化的對(duì)象就會(huì)報(bào)錯(cuò)并拋出異常
- 常用的異常有:
ValueError :傳入無(wú)效的錯(cuò)誤的參數(shù)
TypeError:進(jìn)行了對(duì)類(lèi)型無(wú)效的操作
IndexError:序列中沒(méi)有此索引
NameError:使用未定義的變量
更多更具體的異??梢詤⒖糚ython官方文檔,讀讀官方文檔更健康
異常的處理:
- python使用try,except,finally,else來(lái)處理異常,它們各自意義如下:
try: s=input("請(qǐng)輸入要int的字符串:") i=int(s) except ValueError as e: print(e) else: print("這里是當(dāng)沒(méi)有發(fā)生異常時(shí)的操作") finally: print("這里是即使發(fā)生異常也會(huì)執(zhí)行的代碼") """第一次運(yùn)行結(jié)果: 請(qǐng)輸入要int的字符串:123 這里是當(dāng)沒(méi)有發(fā)生異常時(shí)的操作 這里是即使發(fā)生異常也會(huì)執(zhí)行的代碼 """ """第二次運(yùn)行結(jié)果 請(qǐng)輸入要int的字符串:abc invalid literal for int() with base 10: 'abc' 這里是即使發(fā)生異常也會(huì)執(zhí)行的代碼 """
- except可以在一條except里捕獲多個(gè)異常,但需要用括號(hào)包裹多個(gè)異常,并且即使同時(shí)捕獲多個(gè)異常,由于異常會(huì)導(dǎo)致程序發(fā)生終止,所以只會(huì)捕獲到一個(gè)異常,所以只需要一個(gè)獲取異常返回對(duì)象的變量:
- 如果不確定捕獲什么異常,可以使用異常的基類(lèi)Exception【更高級(jí)的可以使用BaseException】,并且最好把Exception放在所有except的最后:
自定義異常:
- 使用raise可以拋出自定義的異常信息
- 只要繼承了Exception,就可以定義自己的異常類(lèi):
class myException(Exception): def __init__(self,msg): self.message=msg def __str__(self):###這里就是異常的字符串信息 return self.message try : raise myException("我的異常")#py3 except myException as e: print(e) """ 結(jié)果: 我的異常 """
斷言:
- 意義:與其讓程序在運(yùn)行最崩潰,不如在出現(xiàn)錯(cuò)誤條件時(shí)就崩潰【比如說(shuō),老司機(jī)想要開(kāi)車(chē),隨便開(kāi)車(chē)風(fēng)險(xiǎn)很大的,使用斷言就好像先判斷路況如何,然后再開(kāi)車(chē),而不是說(shuō)開(kāi)車(chē)出去才發(fā)現(xiàn)交警大隊(duì)在等待】
police=False assert police ==False print("老司機(jī)開(kāi)車(chē)?yán)?,嗚嗚?)
police=True assert police ==False print("老司機(jī)開(kāi)車(chē)?yán)玻瑔鑶鑶?)#報(bào)錯(cuò),AssertionError
更多Python相關(guān)內(nèi)容感興趣的讀者可查看本站專(zhuān)題:《Python入門(mén)與進(jìn)階經(jīng)典教程》、《Python字符串操作技巧匯總》、《Python列表(list)操作技巧總結(jié)》、《Python編碼操作技巧總結(jié)》、《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python函數(shù)使用技巧總結(jié)》及《Python文件與目錄操作技巧匯總》
希望本文所述對(duì)大家Python程序設(shè)計(jì)有所幫助。
相關(guān)文章
Python3+django2.0+apache2+ubuntu14部署網(wǎng)站上線的方法
這篇文章主要介紹了Python3+django2.0+apache2+ubuntu14部署網(wǎng)站上線的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-07-07解決python中畫(huà)圖時(shí)x,y軸名稱(chēng)出現(xiàn)中文亂碼的問(wèn)題
今天小編就為大家分享一篇解決python中畫(huà)圖時(shí)x,y軸名稱(chēng)出現(xiàn)中文亂碼的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-01-01Python for循環(huán)與getitem的關(guān)系詳解
這篇文章主要介紹了Python for循環(huán)與getitem的關(guān)系詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-01-01keras分類(lèi)模型中的輸入數(shù)據(jù)與標(biāo)簽的維度實(shí)例
這篇文章主要介紹了keras分類(lèi)模型中的輸入數(shù)據(jù)與標(biāo)簽的維度實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-07-07python中django框架通過(guò)正則搜索頁(yè)面上email地址的方法
這篇文章主要介紹了python中django框架通過(guò)正則搜索頁(yè)面上email地址的方法,涉及django框架及正則表達(dá)式的使用技巧,需要的朋友可以參考下2015-03-03Python使用socket實(shí)現(xiàn)組播與發(fā)送二進(jìn)制數(shù)據(jù)
在工作中經(jīng)常會(huì)用到socket傳輸數(shù)據(jù),例如客戶端給服務(wù)器發(fā)送數(shù)據(jù)(雙方約定了數(shù)據(jù)格式),本文主要介紹了Python使用socket實(shí)現(xiàn)組播與發(fā)送二進(jìn)制數(shù)據(jù),感興趣的可以了解一下2021-06-06PyTorch中flatten()?函數(shù)的用法實(shí)例小結(jié)
在PyTorch中,flatten函數(shù)的作用是將一個(gè)多維的張量轉(zhuǎn)換為一維的向量,它可以將任意形狀的張量轉(zhuǎn)換為一維,而不需要指定轉(zhuǎn)換后的大小,這篇文章主要介紹了PyTorch中flatten()?函數(shù)的用法,需要的朋友可以參考下2023-11-11Python正則表達(dá)式re.search()用法詳解
re是Python中最常見(jiàn)的正則表達(dá)式模塊,常用方法包括compile,match,findall,finditer,search,split,sub等,下面這篇文章主要給大家介紹了關(guān)于Python正則表達(dá)式re.search()用法詳解的相關(guān)資料,需要的朋友可以參考下2022-09-09