python try...except捕获异常

异常类型:

 Exception: 所有异常的基类。

 SystemExitKeyboardInterrupt: 退出程序或中断执行。

 GeneratorExit: 生成器抛出的异常。

 StopIteration: 迭代器耗尽时抛出。

 TypeError: 类型错误,如尝试使用不正确的函数参数类型。

 ValueError: 值错误,如传入函数的参数不在指定范围内。

 IndexError: 索引错误,如尝试访问列表中不存在的索引。

 ZeroDivisionError: 除以零的错误。

 NameError: 尝试访问未定义的变量。

异常处理细节:

 捕获特定异常:你可以指定一个或多个异常类型,以便只捕获那些特定的异常。

 捕获所有异常:使用except:可以捕获所有未被前面except捕获的异常。

 异常传递:如果你不想处理一个异常,可以使用raise关键字再次抛出它。

 finally语句:finally子句中的代码会在try块执行完毕后执行,无论是否发生异常。它通常用于清   理工作,如关闭文件。

 异常嵌套:可以在一个except块内部使用另一个try...except块来捕获更具体的异常。

 自定义异常:可以通过定义一个继承自Exception的新类来创建自定义异常

注意事项

  • try块至少包含一个exceptfinally子句。
  • 在捕获异常时,不要捕获所有异常(如Exception),除非你真的想捕获所有异常。
  • 在处理异常时,要避免将异常隐藏起来,因为这可能会导致问题难以追踪。
  • 使用异常要谨慎,不要滥用,因为它们可能会使代码的意图变得不明确。

下面是一个代码示例

while True:
    a = input("请输入三角形三边:")
    b = input()
    c = input()
    try:
        a = float(a)
        b = float(b)
        c = float(c)
        assert a + b > c
        assert b + c > a
        assert a + c > b
        print('三边可以构成三角形')
    except ValueError:
        print("必须输入数字")
    except AssertionError:
        print("不能构成三角形")
    else:
        break
    finally:
        if a + b < c or b + c < a or a + c < b:
            print("请再输一遍")
        else:
            print("恭喜你成功了")

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值