欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python如何使用raise拋出自定義異常

 更新時(shí)間:2023年08月12日 09:19:25   作者:一二三四!  
這篇文章主要介紹了python如何使用raise拋出自定義異常問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

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)文章

最新評(píng)論