【Python基础知识库】Python中raise语句的作用

本文介绍了Python中的raise语句,当程序遇到错误时,可以通过raise手动触发异常。执行raise后,后续代码将不再执行,除非在except块中有处理。raise语句的三种常见用法包括:不带参数重新引发异常、指定异常类型和带有描述信息的异常。利用raise,开发者可以更好地控制异常处理流程。

raise语句的作用

当程序出错时,python会自动触发异常,也可以通过raise语句触发异常;一旦执行了raise语句,之后的语句不再执行;但如果加入了try...excepet...finally语句,except里的语句会被执行,finally一样也会被执行。

raise语法格式:raise [Exception [, args [, traceback]]],参数Exception 是异常的类型数标准异常中任一种(如NameError),args 是自已提供的异常参数;参数traceback可选,是跟踪异常对象。

raise 语句有如下三种常用的用法:

  • 单独raise,不加其他参数。在except语句中,引发当前上下文中捕获异常,或默认引发RuntimeError。通俗理解就是,捕捉到了异常,但是又想重新引发它,即传递异常不进行处理,可以调用不带参数的raise。
# 在except语句中使用raise
try:
    s = 'a'
    if not s.isdigit():
        raise ValueError("s must be a number!")

except ValueError as e:
    print("引发异常:", e)
    raise

# 结果
'''
Traceback (most recent call last):
  File "C:/../../../test.py", line 13, in <module>
    raise ValueError("s must be a number!")
ValueError: s must be a number!
'''
# 在没有引发过异常的程序使用raise,引发的是默认的RuntimeError
try:
    s = 'a'
    if not s.isdigit():
        raise

except RuntimeError as e:
    print("引发异常:", e)

# 结果
'''
引发异常: No active exception to reraise
'''
  • raise 异常类名称:raise后面带一个异常类名称,表示引发执行类型的异常。
try:
    s = None
    if s is None:
        print('s是空对象')
        raise ValueError
    print(len(s))

except Exception:
    print('空对象没有长度')

# 结果
'''
s是空对象
空对象没有长度
'''
  • raise 异常类名称("描述信息"):在引发指定类型的异常,同时附带异常的描述信息。
# 定义函数
def func(number):
    print(number)
    if number < 1:
        raise Exception("Invalid number!")
        # 触发异常后,后面的代码不会执行
    print(number + 1)

if __name__ == '__main__':
    try:
        func(0)
    except Exception as e:
        print("触发了异常!", e)
    else:
        print("未触发异常!")
    finally:
        print("程序执行完毕!")

# 结果
'''
0
触发了异常! Invalid number!
程序执行完毕!
'''
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值