python 的与众不同 -- 进阶篇(六、异常)

异常(Exception)

  • 异常就是程序中的错误
  • 异常可导致以后的代码无法执行

异常处理

  • 有些异常是我们预料到并允许存在的
  • 异常处理可以使以后的代码继续执行
  • 语法:
    try:
        #可能有异常的代码
        pass
    except Exception as e:
        # 代码发生异常走这里
        raise
    else:
        # 代码没发生异常走这里
        pass
    finally:
        # 无论何时都会走这里
        pass
    
    异常处理语句中else和finally可以省略不用,但except和finally至少有一个
  • except后可加上具体异常类,从而捕获具体异常
  • except可以写多个
  • except后变加Exception或什么都不写,则捕获所有未捕获异常
  • Exception是所有异常的父类
  • as e表示将类赋值给变量e

异常的传播

  • python异常会自动向上传播,不用像其它语言一样手动抛出
  • 异常被处理后不会再向上传播
  • 如果异常一直没有被处理,就一直向上传播,到最后程序终止并输出异常信息
  • 在程序运行过程中,所有异常信息都会保存在一个异常对象中,向上传播时,实际上就是把异常对象向上传递或叫返回,最后解析出异常对象信息并输出

抛出异常

  • 语法:raise 异常类(‘异常描述’)
  • 在开发过程中,有时我们需要抛出一个异常以来提醒别人
  • 比如说:我们在运算函数中,不希望入参为负数,可以这样写
def add(a,b):
    if a < 0 or b < 0:
        raise Exception('参数不可以为负数')

add(1,-1)

# 执行结果打印
# Traceback (most recent call last):
#   File "testb.py", line 7, in <module>
#     add(1,-1)
#   File "testb.py", line 4, in add
#     raise Exception('参数不可以为负数')
# Exception: 参数不可以为负数

# ***Repl Closed***

自定义异常

  • 语法:类 继承Exception
class MyError(Exception):
    pass

def add(a,b):
    if a < 0 or b < 0:
        raise MyError('参数不可以为负数')

add(1,-1)
# 执行结果打印
# Traceback (most recent call last):
#   File "testb.py", line 10, in <module>
#     add(1,-1)
#   File "testb.py", line 8, in add
#     raise MyError('参数不可以为负数')
# __main__.MyError: 参数不可以为负数

# ***Repl Closed***
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

马志武

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

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

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

打赏作者

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

抵扣说明:

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

余额充值