python如何使用raise拋出自定義異常
python使用raise拋出自定義異常
1.顯然下面這段代碼中'索引越界了...'是這樣被傳遞的
接下來讓我們看一下具體的實(shí)現(xiàn)
練習(xí)1:判斷輸入字符串的長(zhǎng)度,如果小于指定的長(zhǎng)度就報(bào)錯(cuò)
class ShortInputException(Exception): def __init__(self, length, least_length): super().__init__() self.length = length self.least_length = least_length def __str__(self): return '您輸入的長(zhǎng)度為:{},最短長(zhǎng)度為:{}'.format(self.length, self.least_length) try: content = input('請(qǐng)輸入內(nèi)容:') if len(content) < 5: raise ShortInputException(len(content), 5) else: print('符合要求') except ShortInputException as e: print(e) ''' 請(qǐng)輸入內(nèi)容:ASD 您輸入的長(zhǎng)度為:3,最短長(zhǎng)度為:5 '''
注意:
以上程序中,關(guān)于代碼# Exception.__init__(self)的說明
這一行代碼,可以調(diào)用也可以不調(diào)用,建議調(diào)用,因?yàn)開_init__方法往往是用來對(duì)創(chuàng)建完的對(duì)象進(jìn)行初始化工作,如果在子類中重寫了父類的__init__方法,即意味著父類中的很多初始化工作沒有做,這樣就不保證程序的穩(wěn)定了,所以在以后的開發(fā)中,如果重寫了父類的__init__方法,最好是先調(diào)用父類的這個(gè)方法,然后再添加自己的功能。
python主動(dòng)拋出異常、自定義異常
1. 拋出異常
1.1 raise
raise 指定要拋出的異常。
對(duì)應(yīng)參數(shù)必須是異常的實(shí)例或是異常的類(Exception)
例:
def fun(x): ? ? ? if x > 5: ? ? ? ? ? raise Exception(f"x 不能大于 5,x={x}") """ Traceback (most recent call last): ? File "<stdin>", line 1, in <module> ? File "<stdin>", line 3, in fun Exception: x 不能大于 5,x=7 """
1.2 assert
assert condition # condition 為真,不做任何事情 # condition 為假,拋出AssertionError異常 # 等價(jià)于: if not condition: ? ? ? raise AssertionError() # **************************************** assert condition, "錯(cuò)誤原因" ==>? if not condition: ?? ?raise AssertionError("錯(cuò)誤原因")
2. 自定義異常
自定義類異常必須繼承 Exception
自定義異常:
class MySQLError(Exception): ? ? def __init__(self, error_info): ? ? ? ? super(MySQLError, self).__init__(error_info) ? ? ? ? self.error_info = error_info ? ? def __str__(self): ? ? ? ? return self.error_inf
使用自定義異常:
try: ? ? raise MySQLError('異常') except MySQLError as e: ? ? print(e)
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
刪除pycharm鼠標(biāo)右鍵快捷鍵打開項(xiàng)目的操作
這篇文章主要介紹了刪除pycharm鼠標(biāo)右鍵快捷鍵打開項(xiàng)目的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2021-01-01python 實(shí)現(xiàn)多維數(shù)組(array)排序
今天小編就為大家分享一篇python 實(shí)現(xiàn)多維數(shù)組(array)排序,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-02-02python機(jī)器學(xué)習(xí)Github已達(dá)8.9Kstars模型解釋器LIME
這篇文章主要為大家介紹了Github已達(dá)8.9Kstars的最佳模型解釋器LIME的使用示例及功能詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助2021-11-11Python解決%matplotlib inline標(biāo)紅底報(bào)錯(cuò)問題
在使用非Jupyter環(huán)境如Spyder或PyCharm時(shí),%matplotlib inline會(huì)因?yàn)槭荍upyter特有的魔法命令而導(dǎo)致報(bào)錯(cuò),這條命令是用于Jupyter Notebook或Jupyter Qt Console中,主要作用是將matplotlib的圖表直接嵌入到Notebook中顯示2024-09-09python中hasattr()、getattr()、setattr()函數(shù)的使用
這篇文章主要介紹了python中hasattr()、getattr()、setattr()函數(shù)的使用方法,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-08-08