【Python从入门到进阶】Python异常处理

接上篇《18、文件内容序列化和反序列化操作
上一篇我们学习了文件读取及写入数据序列化和反序列化的操作。本篇我们来学习Python中有关异常(捕获异常、处理异常等)的知识。

一、异常的定义

在编写代码时,我们无法完全掌控程序运行过程中会出现哪些问题。例如,文件不存在、网络连接中断、用户输入非法数据等错误都可能导致程序崩溃或者产生不可预知的行为。因此,为了提高程序健壮性和可靠性,我们需要使用异常处理机制来处理这些情况。

Python中的异常处理机制指的是当程序执行过程中出现异常时,通过捕获异常并进行适当的处理,使得程序能够正常退出。

二、处理异常方法

Python中可以使用try-except语句来捕获异常。try块中包含可能抛出异常的代码,except块则负责处理try块中抛出的异常。
其基本语法如下:

try:
    # 可能抛出异常的代码块
except [ExceptionType]:
    # 处理异常的代码块

其中,try块包含可能抛出异常的代码,如果try块中的代码执行成功,则跳过except块,继续执行后面的代码;
如果try块中的代码抛出了指定类型的异常,就会退出try块,转而执行except块中的代码。

方括号中的[ExceptionType]是一个可选项,用于指定要捕获的异常类型。如果不指定ExceptionType,则except块将捕获所有类型的异常。如果指定了ExceptionType,则只有当try块中抛出的异常类型与之匹配时才会执行except块中的代码。

除了try和except块之外,Python中的异常处理机制还支持其他的关键字:
else:在try块成功执行后执行一些附加操作;
finally:在try块结束后无论是否触发异常都执行一些清理工作。

完整的 try-except-finally 语法如下:

try:
    # 可能抛出异常的代码块
except [ExceptionType]:
    # 处理异常的代码块
else:
    # 如果没有异常发生,则执行该代码块
finally:
    # 无论异常是否发生,都执行该代码块

三、异常处理实例

下面是一个读取文件时可能出现FileNotFoundError异常的处理实例:

try:
    with open('file.txt', 'r') as f:
        content = f.read()
except FileNotFoundError:
    print('File not found!')

效果:

在上述代码中,我们使用try-except语句来处理打开文件时可能出现的FileNotFoundError异常。try块中的代码尝试打开名为file.txt的文件并读取其中的内容。如果文件不存在,则抛出FileNotFoundError异常。except块中的代码将捕获这个异常并打印出错误信息"File not found!"。

如果我们不指定具体的异常类型,那么try会获取所有的异常,使用as关键字将捕获的异常对象赋值给变量e,然后打印出e的类型,使用type(e).name可以获取捕获的异常对象的类名,从而得到异常类型。我们故意在try中再制造一个除以0的异常,看看最终except会给我们抛出什么错误:

try:
    with open('file.txt', 'r') as f:
        content = f.read()
except Exception as e:
    print('实例1捕获到的异常:', type(e).__name__)

try:
    num1 = 1
    num2 = 0
    num3 = num1/num2
except Exception as e:
    print('实例2捕获到的异常:', type(e).__name__)

效果:

在上述代码中,我们仍然使用try-except语句处理打开文件时可能抛出的任何异常。不过这次我们没有指定异常类型,而是直接打印出所有捕获到的异常。

通过使用try-except语句,我们可以对程序运行过程中可能出现的异常进行处理,避免程序崩溃或者产生不可预知的结果。

至此,我们关于Python的所有基础知识全部学习完毕,下一篇我们进入Python的实战教程,学习爬虫的相关技术。

参考:尚硅谷Python爬虫教程小白零基础速通教学视频

转载请注明出处:https://blog.csdn.net/acmman/article/details/130680697

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

光仔December

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

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

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

打赏作者

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

抵扣说明:

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

余额充值