python断言失败_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:使用未定義的變量
更多更具體的異常可以參考Python官方文檔
,讀讀官方文檔更健康
異常的處理:
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)?#xff0c;嗚嗚嗚")
police=True
assert police ==False
print("老司機(jī)開(kāi)車(chē)?yán)?#xff0c;嗚嗚嗚")#報(bào)錯(cuò),AssertionError
希望本文所述對(duì)大家Python程序設(shè)計(jì)有所幫助。
總結(jié)
以上是生活随笔為你收集整理的python断言失败_python异常处理、自定义异常、断言原理与用法分析的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: vb.net读取excel并写入dgv_
- 下一篇: 如何在手机上打开xmind文件_如何将手