在Python中,抛出自定义异常的语法为raise 异常类对象 。也就是说可以使用 raise 语句来抛出异常, raise 语句后需要跟一个异常类或异常类的实例。 1、使用 raise 语句来抛出异常需求:定义一个求和方法 (1)抛出异常类
python def add(a, b): # 如果a和b中有负数,就向调用处抛出异常 if a < 0 or b < 0: # raise用于向外部抛出异常,后边可以跟一个异常类,或异常类的实例 # 此时返回一个异常类 raise Exception # 正常计算并返回结果 r = a + b return rprint(add(-123, 456)) 结果如下图:可以看到没有异常描述信息 ![](http://image109.360doc.com/DownloadImg/2022/01/2712/238526035_1_20220127121318132.png)
(2)抛出异常类的实例
python def add(a, b): # 如果a和b中有负数,就向调用处抛出异常 if a < 0 or b < 0: # raise用于向外部抛出异常,后边可以跟一个异常类,或异常类的实例 # 此时返回一个异常类的实例 raise Exception("传入的参数不能有负数。") # 正常计算并返回结果 r = a + b return rprint(add(-123, 456)) 结果如下图: ![](http://image109.360doc.com/DownloadImg/2022/01/2712/238526035_2_20220127121318476.png)
2、自定义异常类自定义异常类,只需要创建一个类继承Exception 即可。 (1)简单实现
python # 自定义异常类,只需要创建一个类继承Exception即可# 自定义异常类完全不用写任何内容class MyError(Exception): passdef add(a, b): # 如果a和b中有负数,就向调用处抛出异常 if a < 0 or b < 0: # raise用于向外部抛出异常,后边可以跟一个异常类,或异常类的实例 # 此时返回一个异常类的实例 raise MyError("传入的参数不能有负数。自定义的,这样也行!") # 正常计算并返回结果 r = a + b return rprint(add(-123, 456)) 结果如下图: ![](http://image109.360doc.com/DownloadImg/2022/01/2712/238526035_3_20220127121318819.png)
(2)完整实现需求:密码长度不足,则报异常(用户输入密码,如果输入的长度不足3位,则报错,即抛出自定义异常,并捕获该异常)。
python # 自定义异常类,继承Exceptionclass ShortInputError(Exception): def __init__(self, length, min_len): # 用户输入的密码长度 self.length = length # 系统要求的最少长度 self.min_len = min_len # 设置抛出异常的描述信息 def __str__(self): return f'你输入的长度是{self.length}, 不能少于{self.min_len}个字符'def main(): # 2. 抛出异常: 尝试执行:用户输入密码,如果长度小于3,抛出异常 try: con = input('请输入密码:') if len(con) < 3: # 抛出异常类创建的对象 raise ShortInputError(len(con), 3) # 3. 捕获该异常 except Exception as result: print(result) else: print('密码已经输入完成')main()
__EOF__
|