Python异常处理2021-08-27


当程序遇到问题不让程序结束,而越过错误程序继续向下执行

try…except…else

格式:
try:
    语句t
except 错误码 as e:
    语句1
except 错误码 as e:
    语句2

except 错误码 as e:
    语句n
else:
    语句e

注意:

else语句可有可无

作用:

用来检查try语句块中的错误,从而让except语句捕获错误信息并处理

逻辑:当程序执行到try-except-else语句时

1、如果当try"语句t”执行出现错误,会匹配第一个错误码,如果匹配上就执行对应“语句”
2、如果当try"语句t”执行出现错误,没有匹配到异常,错误将会被提交到上一层的try语句
    或这到程序的最上层
2、如果当try"语句t”执行没有出现错误,执行else下的“语句e”
try:
    print(3 / 1)
except ZeroDivisionError as a:
    print("除数为0")
except NameError as e:
    print("没有该变量")
else:
    print("代码没有问题")

#使用except而不使用任何的错误类型
try:
    # print(4 / 0)
    print(num)
except:
    print("程序出现了异常")
print("**************")

使用except带着多种异常

try:
    pass
except(NameError,ZeroDivisionError):
    print("出现了NameError或ZeroDivisionError错误")

#特殊:
#1、错误其实是class类,所有的错误都继承自BaseException,所以
#在捕获的时候,它捕获了该类型的错误,还把子类一网打尽
try:
    print(5 / 0)
except BaseException as e:
    print("异常1")
except ZeroDivisionError as a:
    print("异常2")

跨越多层调用出现了错误,

#跨越多层调用,main调用了func2,func2调用了func1,func1出现了错误,
# 这是只要main捕获到了就可以处理了
def func1(num):
    print(1 / num)
def func2(num):
    func1(num)
def main():
    func2(0)

try:
    main()
except ZeroDivisionError as e:
    print("****")

try—except—finally

格式:
try:
    语句t
except 错误码 as e:
    语句1
except 错误码 as e:
    语句2
    .....
except 错误码 as e:
    语句n
finally:
    语句f

作用:语句t无论是否有错误,都将执行最后的语句f

try:
    print(1 / 1)
except ZeroDivisionError as e:
    print("为0了")
finally:
    print("必须执行我")
print("***********")

断言

def func(num, div):
    assert (div != 0), "div不能为0"
    return num / div

print(func(10, 0))
#输出结果:AssertionError: div不能为0
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值