Python异常处理

举报
布小禅 发表于 2021/09/09 10:25:54 2021/09/09
【摘要】 异常,捕获,抛出

@[toc]

前言

📢 博客主页:❤布小禅❤
📢 作者专栏:
❤Python❤
❤Java❤

关于异常处理,这个是必学的

一、异常/错误

异常就是我们在写代码的时候,爆红啦,高亮啦什么的,还有运行的时候碰到的各种报错啦

我们经常会因为各种各样的报错而头疼——哦!天呐!又报错了!

但是我们应该想想好的,我们编程水平不也随着解决各种各样的报错而提高了吗?

当然我们也可以通过某些方式来避免这种异常,当然这是我们在解决了许许多多的报错后的事啦,也就是现在!是的没错就是现在!O(∩_∩)O哈哈~

一般分为三个类型:编译时错误 、运行时错误 、逻辑型错误

1 编译时错误

就是在写代码的时候,出现了语法上的错误,比如在定义变量的时候

 i = 0

在这里,我们就犯了个编译时的错误,缩进不对

IndentationError: unexpected indent

2. 运行时错误

就是语法上没有出现错误,但是编译的时候会出现错误,比如

li = [1, 2, 3, 4, 5]
print(li[5])

在这里,虽然不会爆红,但是却会在运行的时候出现错误

IndexError: list index out of range

意思是索引超出范围,我们的列表的长度为5,但是下标却是从0开始的

3. 逻辑型错误

就是我们的代码不符合逻辑

a = 1;
b = 0;
print(a/b)

就会出现错误

ZeroDivisionError: division by zero

二、异常处理

知道了异常都是些什么类型的,那么我们就来看看,异常怎么处理

是的,我们需要处理异常

在异常没有发生的时候,就将它预料到,提前给他处理了

这叫什么?很明显嘛!紧急避险!

1. 捕获异常

可以使用try:…except:…语句来捕获异常

格式:

try:
    有可能出错的代码块
except 错误类型(可选):
    如果出错应该执行的代码
else:
    如果没错应该执行的代码
finally:
    不管有没有出错,都会执行的代码

当然那个错误类型,如果你不知道是什么类型,不写也可以

直接写解决方案就可以

1.1 try except finally语句

try:
    1/0
except:
    print("被除数不能为0")
finally:
    print("不要捣乱哦,好好输入")

1.2 try except else finally语句

try:
    1/1
except:
    print("被除数不能为0")
else:
    print("运算正确")
finally:
    print("不要捣乱哦,好好输入")

2. 抛出异常

将异常抛出给控制台

也就是平常见的红色报错

try:
    print(a)
except NameError as e:
    pass

这个代码不抛出异常的话,就什么都不执行,正常结束

在这里插入图片描述

而如果抛出异常就是这样

try:
    print(a)
except NameError as e:
    raise e

在这里插入图片描述

3. 自定义异常

通过继承Exception 类来实现自定义异常类

class MyError(Exception):
    def __init__(self, value):
        self.value = value

    def __str__(self):
        return self.value


try:
    raise MyError(2)
except MyError as e:
    print(e.value)

输出:在这里插入图片描述

结语

兴趣是最好的老师,坚持是不变的真理。
学习不要急躁,一步一个脚印,踏踏实实的往前走。
每天进步一点点,日积月累之下,你就会发现自己已经变得很厉害了。

我是布小禅,一枚自学萌新,跟着我每天进步一点点吧!

说了这么多暂时也就够了,那么就告辞吧

在这里插入图片描述

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。