《0基础》学习Python——第十五讲__异常处理

一、异常处理(try-exception-else-finally  raise)

        在程序运行过程中,总会遇到各种各样的错误。有的错误是程序编写有问题造成的,比如本来应该输出整数结果输出了字符串,这种错误通常称之为bug,bug是必须修复的。有的错误是用户输入造成的,比如让用户输入email地址,结果得到一个空字符串,这种错误可以通过检查用户输入来做相应的处理

        还有一类错误是完全无法在程序运行过程中预测的,比如写入文件的时候,磁盘满了,写不进去了,或者从网络抓取数据,网络突然断掉了。这类错误也称为异常,在程序中通常是必须处理的,否则,程序会因为各种问题终止并退出。Python内置了一套异常处理机制,来帮助我们进行错误处理

        异常处理是指在程序运行过程中出现错误或异常时,对其进行捕获、处理和恢复的一种机制。在Python中,异常处理通过使用try-except语句块来实现。

        在try块中放置可能会发生异常的代码,当异常发生时,程序会跳转到对应的except块中执行特定的处理代码。except块可以捕获特定类型的异常,也可以使用通用的Exception来捕获所有类型的异常。

        除了使用try-except语句外,还可以使用finally子句来定义一些一定会执行的代码,无论是否发生异常。在finally块中,通常会放置一些资源释放的操作,以确保无论程序是否发生异常,都能正确地释放资源。

        异常处理还可以使用raise语句手动抛出异常,以便在程序中主动引发异常并触发相应的异常处理逻辑。

Python异常层级:

二、异常错误类型

        1、SyntaxError : 语法错误,通常表示代码书写不正确。

        2、ZerDivisionError :除数为0错误 

        3、NameError:名称错误,表示使用了未定义的变量或函数名。

        4、TypeError类型错误,表示变量或表达式的类型不正确。

        5、IndexError索引错误,表示对序列类型(如列表或字符串)使用了无效的索引。

        6、ValueError值错误,表示传递给函数的参数值不合法。

        7、KeyError键错误,表示在字典中使用了不存在的键。

        8、FileNotFoundError:文件未找到错误,表示试图打开或不存在的文件。

        9、ArributeError : 尝试访问位置对象属性错误

       

三、try-except用法

        在Python中可通过try...except...else...finally...机制捕获异常并进行处理

        

        例如下列简单代码

if __name__ == '__main__':

    lt=[1,2,5,8,6,1]
    try: #其下面放不确定会不会出错的代码
        lt[6]
    except Exception as e:  #Exception为Python内置的异常处理的大类,如果try出错,那么执行这部分代码块内容
        print(e)

        如上部代码,构造了一个列表,然后去索引它,但是不知道索引的对不对,就将不确定的处理方法放在try代码块下面,如果是错的,那么就运行except代码块的内容,而Exception是一个是一个Python内置的大类,便可以直接打印报错类型,而不会显示红色报错并终止程序。

即如果使用了try和except函数,那么程序出错则打印这个结果

如果没有使用try则会打印这个结果,即 索引越界

四、else和finally用法

if __name__ == '__main__':
    # a=10
    lt=[1,2,5,8,6,1]
    try:
        lt[6]
    except Exception as e:
        print(e)
    else:
        print('try 代码块没有错误')

    finally:
        print('这句话必须打出来)

    print("代码继续执行")

上述代码,如果try判断代码块没有异常则继续运行else内的语句,如果try出现异常,那么便会直接运行except内的代码块,但是无论try判断是否有异常,finally都会运行。

五、raise作用

        raise 需要指定要被抛出的异常。它必须是一个异常的实例或者是异常的(也就是 Exception 的子类

        用户自定义异常:在Python中可以通过创建一个新的异常类来拥有自己的异常

        自定义异常的原因:Python提供的内建异常不够用、可以预估某个错误的产生

        定义异常类 : 异常类继承自 Exception 类,可以直接继承,或者间接继承

        raise关键字在Python中用于手动抛出异常。它的作用是使程序进入异常状态,并显示特定的错误消息。当某个错误或异常条件发生时,可以使用 raise 关键字来主动抛出异常。通过 raise 关键字,可以选择性地指定要抛出的异常类型和相关的错误信息。  

        其用法如下:

raise ExceptionType("error message")
  • ExceptionType:表示要抛出的异常类型,可以是内置的异常类也可以是自定义的异常类
  • "error message":表示错误消息,是一个可选的参数,用于描述异常的具体内容。

        首先,我们定义一个类class Myerror(Exception):其继承Python内置的Exception类,可以定义特定类型的异常,以便在程序中抛出和处理这些异常。

class Myerror(Exception):
    pass
    
if __name__ == '__main__':
    li=[150,160,-10,-50,66]
    for i in li:
        v=100/i
        if v<0: #抛出异常
            raise Myerror('这批货有问题,终止交易')

其运行结果为:

六、SyntaxError(语法错误)

      
 缺少起始符号或结尾符号(括号、引号等)

        缩进错误:

                

        关键词拼写错误:

七、六种典型异常

        1、除零错误(ZeroDivisionError) : 除数为0

        2、名称错误(NameError) : 变量使用前未进行申明或者初始化

        3、类型错误(TypeError)  : 某些函数或者方法只适用于特定的数据类型,如果 对数据类型的操作不当,就会产生类型错误

                4、数值错误(ValueError) : 在输入类型正确的情况下,具体输入值错误

                5、索引错误(IndexError) :  超出序列长度的索引操作

                6、属性错误(AttributeError) : 方法或者属性不适用该对象

  • 28
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

菜就多练_0828

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值