异常

本文详细介绍了Python中的异常处理机制,包括异常的概念、异常的传播方式、如何使用try-except语句来捕获和处理异常,以及如何主动抛出异常。通过实例展示了不同类型的异常及其处理方法。

异常


程序在运⾏过程中可能会出现⼀些错误。⽐如: 使⽤了不存在的索引,两个不
同类型的数据相加…这些错误我们称之为异常
处理异常 程序运⾏时出现异常,⽬的并不是让我们的程序直接终⽌!Python
是希望在出现异常时,我们可以编写代码来对异常进⾏处理

异常的传播:
当在函数中出现异常时,如果在函数中对异常进⾏了处理,则异常不会在进⾏传播。如果函数中没有对异常进⾏处理,则异常会继续向函数调⽤传播。
如果函数调⽤处处理了异常,则不再传播异常,如果没有处理则继续向调⽤处传播。直到传递到全局作⽤域(主模块)如果依然没有处理,则程序终⽌,并显示异常信息。

当程序运⾏过程中出现异常以后,所有异常信息会保存到⼀个异常对象中。⽽异常传播时,实际上就是异常对象抛给了调⽤处。

try语句
try:
代码块(可能出现错误的语句)
except 异常类型 as 异常名:
代码块(出现错误以后的处理⽅式)
except 异常类型 as 异常名:
代码块(出现错误以后的处理⽅式)
except 异常类型 as 异常名:
代码块(出现错误以后的处理⽅式)


.......

else:
代码块(没出错时要执⾏的语句)
finally:
代码块(是否出错该代码块都会执⾏)
try是必须的 else有没有都可以
exceptfinally⾄少有⼀个

捕获异常:
细分错误 非常有用 非常有必要的
细分错误 一般用于 载入日志

try:
    li = [1,2,3]
    li[2]     # 不走except内部
    # li[3]       # 走except内部
    # int('a')    # ValueError
except IndexError as e:
    print(e)    # 载入日志
except ValueError as e:
    print(e)    # 载入日志
except Exception as e:
    print(e)
else:
    print("程序正常的话,执行的代码")
finally:
    print("不管程序怎样,都执行")

主动抛出异常:

def db():
    # 某块报错 告诉使用者
    raise Exception("数据库处理错误")

def demo():
    try:
        db()
    except Exception as e:
        print("db函数错误",e)  #载入日志

    try:
        li = [1,2,3]
        li[3]
    except Exception as e:
        print("自身错误:",e)
demo()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值