当前位置:首页>python>Python异常

Python异常

  • 2026-10-21 13:27:46
Python异常

写在前面

在任何编程语言中都难免会遇到异常(报错),如何查看报错、理解报错、避免报错、捕获报错信息,都是我们需要去应对的环节。

一、异常定义

异常:当程序检测到错误时,Python解释器就无法继续执行了,此时会出现一些错误的提示,这就是所谓的”异常”,也就是我们常说的BUG。例如最常见的bug,打错函数名称:
pring("Biomamba")# 这时就会返回报错,并告诉发生错误的位置和具体原因

NameError: name ‘pring’ is not defined

二、异常捕获

程序遇到bug时会存在两种情况:1、终止程序。2、提醒出现的bug并让整个程序继续运行。情况2就需要进行异常捕获,从而防止整个程序因为一些小bug而停止运行异常捕获基本语法:try:可能错误发生的代码 except:如果出现异常则执行的代码
# 捕获异常(默认不区分异常类型):try:    prinf('这条代码可能有异常')except:print("上条代码有异常,本条被输出")# 可以看到以上几行代码没有报错,输出的内容则是except后的语句
## 上条代码有异常,本条被输出
# 捕获指定异常# 例如这里捕获变量名称未定义的异常"NameError"try:print(Biomamba)exceptNameErroras aerror:print("Biomamba未被定义")# 可以看到错误成功被捕获,且备选方案被执行
## Biomamba未被定义
# 捕获指定异常# 这里我们让异常不属于NameError:try:print(1/0)exceptNameError :print("Biomamba未被定义")# 可以看到错误没有被捕获,提示信息被输出,备选代码也没有被执行

ZeroDivisionError: division by zero

# 捕获多个异常,except(异常1,异常2)try:print(1/0)except(NameError,ZeroDivisionError):print("这是备选代码执行结果")# 可以看出备选代码被成功执行
## 这是备选代码执行结果
# 捕获所有类型异常try:print(1/0)print(Biomamba)exceptException:print("这是备选代码执行结果")# 可以看出备选代码被成功执行

## 这是备选代码执行结果

三、异常else

除了except之外,还可以设置没有异常时选择执行的代码:
try:print("这里没有异常")except:print("这是有异常后的执行结果")else:print("这是没有捕获到异常的执行结果")# 大家可以体会一下上述几行代码的执行逻辑
## 这里没有异常## 这是没有捕获到异常的执行结果

四、异常finally

不管有没有异常,finally所包含的语句均会被执行:
# 有异常try:1/0print("这里没有异常")except:print("这是有异常后的执行结果")else:print("这是没有捕获到异常的执行结果")finally:print("我在所有条件下都会被执行")# 大家可以体会一下上述几行代码的执行逻辑
## 这是有异常后的执行结果## 我在所有条件下都会被执行
# 无异常try:1+1print("这里没有异常")except:print("这是有异常后的执行结果")else:print("这是没有捕获到异常的执行结果")finally:print("我在所有条件下都会被执行")# 大家可以体会一下上述几行代码的执行逻辑
## 2## 这里没有异常## 这是没有捕获到异常的执行结果## 我在所有条件下都会被执行

五、异常传递

异常是具有传递性的,可以用as来定义接收异常的变量:
try:1/0exceptExceptionas my_error:print("异常被成功捕获,下面是异常的具体信息:\n")print(my_error)# 可以看到除数异常被成功捕获
## 异常被成功捕获,下面是异常的具体信息:## ## division by zero
# 但异常的捕获是一个局部变量,跳出异常捕获语句后捕获的异常变量就失效了:try:1/0exceptExceptionas my_error:print("异常被成功捕获,下面是异常的具体信息:\n")print(my_error)# 可以看到除数异常被成功捕获,但my_error变量不存在

NameError: name ‘my_error’ is not defined

往期回顾

生信Python速查手册

Python安装(Windows+Linux)

Python的"Rstudio"——Pycharm

码Python神器:jupyter notebook

一文了解Python基础:字面量、注释、变量、类型、运算符

Python判断语句

Python循环语句

Python函数与方法

一文掌握Python数据容器

Python函数进阶

Python文件操作

如何联系我们

留一个领取资料、开箱即用的单细胞分析镜像的微信号[Biomamba_zhushou],方便各位随时交流。同时我们也构建了交流群矩阵,欢迎大家入群讨论。
大家可以阅读完这几篇之后添加
给生信入门初学者的小贴士
没有检索,就没有发言权

已有生信基地联系方式的同学无需重复添加

您点的每个赞和在看,我都认真当成了喜欢

最新文章

随机文章