python基础——异常捕获【try-except、else、finally】

📝前言:

这篇文章主要介绍一下python基础中的异常处理:
1,异常
2,异常的捕获
3,finally语句

🎬个人简介:努力学习ing

📋个人专栏:C语言入门基础以及python入门基础

🎀CSDN主页 愚润求学

🌄每日鸡汤:路漫漫其修远兮,吾将上下而求索


文章目录

一,异常

1,什么是异常?

Python中的异常是在程序执行期间发生的错误,它们会中断程序的正常流程。当程序运行时,如果出现异常,Python会中断当前执行任务的控制权,并寻找相应的异常处理器。

2,异常有类型吗?

答案是:有! 如,下面是几种常见的异常类型:
ZeroDivisionError: 当除数为零时引发。
IndexError: 当尝试访问列表、元组或字符串中不存在的索引时引发。
KeyError: 当尝试访问字典中不存在的键时引发。

TypeError: 当使用不支持该操作的数据类型时引发,例如将字符串与整数相加。
ValueError: 当使用不支持该值的数据类型时引发,例如使用非浮点数作为float()函数的参数。
IOError: 当发生I/O错误时引发,例如打开一个不存在的文件。
MemoryError: 当内存不足时引发。
OverflowError: 当数值运算结果太大或太小,无法表示为浮点数时引发。
RecursionError: 当递归深度超过限制时引发。
SyntaxError: 当Python解释器遇到语法错误时引发,例如多了一个或少了闭合的括号。
IndentationError: 当Python解释器遇到缩进错误时引发,例如代码块的缩进不一致。
TabError: 当混合使用制表符和空格进行缩进时引发。

二,异常捕获

1,什么是异常捕获

异常捕获是程序在执行过程中,对可能出现的不正常情况(即异常)进行捕捉并处理的过程。通过异常捕获,程序可以在出现错误时继续运行,而不是立即终止。

2,如何进行异常捕获?

在Python中,可以使用try-except语句来进行异常捕获。基本的结构如下:

python 复制代码
try:
    # 尝试执行的代码
    ...
except SomeException (或:except SomeException as e):
    # 当SomeException异常发生时执行的代码
    ...

其中,try块包含程序尝试执行 的代码,而except块包含当特定的异常发生时执行的代码

当在try块中的代码发生异常时,程序会立即跳到紧跟着的except块,并执行该块中的代码。然后,程序会继续执行try块之后的代码。

这个e就是把异常赋值给了变量e(也可以理解为得到一个异常对象e

如果不输入SomeException(异常类型)则代表捕获全部异常,即:
except: ...代表捕获全部异常

同时等效于:except Exception: ...

(1)普通捕获异常

以下是一个简单的例子,演示如何使用try和except捕获异常:

如,当我们运行下面有问题的代码:

python 复制代码
number = int("not a number")

程序会报出下面的错误,并且停止运行:

这是因为我们不能直接将(不是数字的)字符串转换成整数

这时候,假如我们无法确定int()转换会不会出问题,我们就可以用一个try-except来实现:在有问题的时候捕获这个异常,而不停止运行程序。如:

python 复制代码
try:
    # 尝试将字符串转化为整数
    number = int("not a number")
except ValueError:
    # 如果转换失败,捕获ValueError异常
    print("输入的内容不是一个有效的整数。")

运行结果:

可见:ValueError异常被捕获了,并打印"输入的内容不是一个有效的整数。"。

(2)捕获多个异常

实际上,我们还可能想要捕获多种异常 ,或者在不同的except块中捕获不同的异常。例如:

python 复制代码
try:
    # 尝试将字符串转化为整数
    number = int("not a number")
except ValueError:
    # 如果转换失败,捕获ValueError异常
    print("输入的内容不是一个有效的整数。")
except ZeroDivisionError:
    # 如果除以零,捕获ZeroDivisionError异常
    print("除数不能为零。")

这个例子中,我们同时捕获了ValueErrorZeroDivisionError异常。

(3)else和finally语句

这两条语句是可选的,try-except是必选的
else块中是:异常没有发生时,执行的代码

finally是:无论是否发生异常都要执行的代码

以下是一个使用这些语句的简单示例:

python 复制代码
try:
    # 尝试将字符串转换为整数
    number = int("string")
except ValueError:
    print("发生了一个 ValueError 异常!")
else:
    print("字符串成功转换为整数!")
finally:
    print("这是 finally 块,无论是否发生异常,都会执行。")

输出结果:

在上述示例中,由于字符串不能转换为整数,所以触发了ValueError异常。因此,except块中的代码被执行,而else块中的代码则不会执行。


🌈我的分享也就到此结束啦🌈

要是我的分享也能对你的学习起到帮助,那简直是太酷啦!

若有不足,还请大家多多指正,我们一起学习交流!

📢公主,王子:点赞👍→收藏⭐→关注🔍

感谢大家的观看和支持!祝大家都能得偿所愿,天天开心!!!

相关推荐
GJGCY1 分钟前
技术剖析:智能体工作流与RPA流程自动化的架构差异与融合实现
人工智能·经验分享·ai·自动化·rpa
XiangrongZ4 分钟前
江协科技STM32课程笔记(五)— ADC模数转换器
笔记·科技·stm32
MediaTea27 分钟前
Python 第三方库:matplotlib(科学绘图与数据可视化)
开发语言·python·信息可视化·matplotlib
草莓熊Lotso36 分钟前
C++ 方向 Web 自动化测试入门指南:从概念到 Selenium 实战
前端·c++·python·selenium
JS.Huang42 分钟前
【JavaScript】原生函数
开发语言·javascript·ecmascript
Olrookie1 小时前
若依前后端分离版学习笔记(二十)——实现滑块验证码(vue3)
java·前端·笔记·后端·学习·vue·ruoyi
请你喝好果汁6411 小时前
Conda_bashrc 初始化机制学习笔记
笔记·学习·conda
我是李武涯1 小时前
PyTorch Dataloader工作原理 之 default collate_fn操作
pytorch·python·深度学习
CoderCodingNo2 小时前
【GESP】C++五级考试大纲知识点梳理, (5) 算法复杂度估算(多项式、对数)
开发语言·c++·算法
Kratzdisteln2 小时前
【Python】绘制椭圆眼睛跟随鼠标交互算法配图详解
python·数学·numpy·pillow·matplotlib·仿射变换