小甲鱼C——异常处理

在编写代码时,经常会出现语法错误,格式错误等等一系列错误;
如果我们不提前进行捕获的话就会被Python自动捕获出现红色报错;
加入我们知道可能会出现错,那么我们就可以进行一些异常处理:
这时就可以使用try-except语句:

try:
    检测范围
except [expression [as identifier]]:
    异常处理代码
try:
    1 / 0
except:
    print("错误")
try:
    1 / 0
except ZeroDivisionError:
    print("错误")

try:
    50 + "asdasd"
except ZeroDivisionError:
    print("错误")

屏幕截图 2024-02-23 115057.png

同时 也可以使用多个 except,但是如果有多个错误,只会调转到其中一个错误,其他错误会忽略

try:
    1 / 0
    520 + "sdad"
except ZeroDivisionError:
    print("除数不能0")
except ValueError:
    print("值不正确")
except TypeError:
    print("类型不正确")

屏幕截图 2024-02-23 115424.png

异常处理的其他语法:

try–except–else

try:
    1 / 0
except:
    print("逮到了")
else:
    print("没有逮到")


try:
    1 / 1
except:
    print("逮到了")
else:
    print("没有逮到")

屏幕截图 2024-02-23 115749.png

try–except–finally

try:
    1 / 0
except:
    print("逮到了")
else:
    print("没逮到")
finally:
    print("逮没逮到都会吱一声")

屏幕截图 2024-02-23 120108.png

屏幕截图 2024-02-23 120011.png

异常处理的嵌套:

try:
    try:
        520 + "sdad"
    except:
        print("内部异常")
except:
    print("外部异常")
finally:
    print("收尾工作")

try:
    1 / 0
    try:
        520 + "sdad"
    except:
        print("内部异常")
except:
    print("外部异常")
finally:
    print("收尾工作")

屏幕截图 2024-02-23 120347.png

raise语句:

我们可以使用raise语句直接进行异常报错,但是不可以对不存在的异常进行报错;

raise ValueError("值不正确")

屏幕截图 2024-02-23 120623.png

异常链:

raise ValueError("不行") from ZeroDivisionError

屏幕截图 2024-02-23 120824.png

assert语句:

与raise类似都是主动引发异常,但是assert只能引发一个叫做AsserttionError的异常;

a = "新年快乐"
assert a == "新年快乐"
assert a != "新年快乐"

屏幕截图 2024-02-23 121153.png

利用异常实现goto:

try:
    while True:
        while True:
            for x in range(10):
                if x > 3:
                    raise
                print(x)
except:
    print("到这里来了")

屏幕截图 2024-02-23 121428.png

  • 10
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值