【Python】异常

本文详细介绍了Python中的异常处理机制,包括try/except的基本用法,try/except/else的结构,以及如何使用raise抛出和捕获异常。通过实例演示了如何优雅地处理程序运行时的错误,提升代码健壮性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

【Python】异常

简介

异常是指当程序语法正确,但运行的时候依旧发生的错误我们称之为异常。
异常一般不会被程序处理,都已错误信息的形式表现出来。

异常处理

try/except

try:
    # 程序正常执行的代码
    a = os.listdir()
except:
    # 发生异常时执行的代码
    print('发生异常')
发生异常

执行步骤:

  1. 首先执行 try 和 except 之间的语句
  2. 没有发生异常,忽略 except 子句
  3. 如果发生异常 try 子句剩余的部分将被忽略,异常的类型和 except 后的名称相符则执行 except 子句
  4. 如果异常类型和 except 定义的不匹配则会重新传递给 try 子句,由解释器抛出错误信息

注意:

  • 可以定义多个不同类型的异常,最多只有一个分支被执行
  • 一个 except 语句也可以同时处理多个异常,需要将这些异常放在一个元组中
  • 当 except 没有指定具体的异常类型时,它将被当做通配符使用,接收所有异常

try/except…else

try:
    # 正常执行的代码
    a = 3
    b = 4
    c = a/b
except:
    # 发生异常时执行的代码
    print('发生异常')
else:
    # 没有发生异常时执行的代码
    print('{0}/{1}={2}'.format(a,b,c))
3/4=0.75
  • else 子句在 try 子句没有发生异常时执行
  • 使用 else 子句比把所有的语句都放在 try 子句里面要好,不仅仅处理那些直接发生在 try 子句中的异常,而且还能处理子句中调用的函数(甚至间接调用的函数)里抛出的异常。
  • else 子句方便定位异常

try/finally

try:
    # 正常执行的代码
    a = 3
    b = 4
    c = a/b
    d = 10
    e = d/0
except:
    # 发生异常时执行的代码
    print('发生异常')
else:
    # 没有发生异常时执行的代码
    print('{0}/{1}={2}'.format(a,b,c))
finally:
    print('d*c={0}'.format(c*d))
发生异常
d*c=7.5
  • try-finally 语句无论是否发生异常都将执行最后的代码。

抛出异常

Python 使用 raise 语句抛出一个指定的异常。

raise 语法格式

raise [Exception [, args [, traceback]]]

a = 0
if a == 0:
    raise Exception('b/a中除数a为0所以抛出异常')
---------------------------------------------------------------------------
Exception                                 Traceback (most recent call last)
<ipython-input-4-f517360799a9> in <module>
      1 a = 0
      2 if a == 0:
----> 3     raise Exception('b/a中除数a为0所以抛出异常')

Exception: b/a中除数a为0所以抛出异常

相关阅读

断言(assert)


在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序猿的向往

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值