当前位置: 首页 > ds >正文

python异常处理

什么是异常

当检测到一个错误时,Python解释器就无法继续执行了,反而出现了一些错误的提示,这就是所谓的异常,在默认情况下,程序会将异常的类型、产生原因、异常出现的位置打印到控制台上,并终止程序的执行

捕获异常

当程序出现了BUG,会出现两种情况

  1. 整个程序因为一个BUG停止运行
  2. 对BUG进行提醒,整个程序继续运行

在工作中,我们不能因为一个小BUG让整个程序全部崩溃,为了达到这种目的,需要做到捕获异常

捕获异常语法

基本语法格式

try:可能发生错误的代码
except:如果出现异常执行的代码
  1. 先执行try中的内容,看有没有问题,如果有问题,就会立即跳转到except中执行
  2. 如果try中没有问题,程序会跳过except,继续向下执行

例:尝试以r 模式打开文件,如果文件不存在,则以w 方式打开

try:f = open('a.txt','r')
except:f = open('a.txt','w')

捕获指定异常

try:print(name)
except NameError:print("name 变量未定义")
  1. 如果尝试执行代码的异常类型与要捕获的异常类型不一致,则无法捕获异常
  2. 一般try 下方只放一行尝试执行的代码

捕获多个异常

需要捕获多个异常时,可以把要捕获的异常类型的名字,放到except后,并使用元组的方式进行书写

try:print(1/0)
except (NameError, ZeroDivisionError):print("ZeroDivisionError 问题")

捕获所有异常

try:print(name)
except Exception as e:print(e)

异常完整格式

异常else

else表示如果没有异常要执行的代码

try:print(1)
except Exception as e:print(e)
else:print("没有异常")

异常finally

finally 表示无论是否出现异常都要执行的代码,如关闭资源

try:f = open("a.txt", "r")
except Exception as e:f = open("a.txt", "w")
else:print('没有异常')
finally:f.close()

异常传递

def func01():print("func01开始")num = 1/0print("func01结束")def func02():print("func02开始")func01()print("func02结束")def main():try:func02()except Exception as e:print(e)main()

如上述代码所示,当函数func01 中发生异常,并没有捕获处理这个异常的时候,异常会传递到func02,当func02 也没有捕获处理这个异常的时候,main 函数会捕获这个异常,这就是异常的传递性。

当所有函数都没有捕获异常的时候,程序就会报错。

http://www.xdnf.cn/news/9915.html

相关文章:

  • 学习如何设计大规模系统,为系统设计面试做准备!
  • DL00924-基于深度学习YOLOv11的工程车辆目标检测含数据集
  • Oracle 19c导入数据出现ORA-56935 ORA-39065
  • Pytorch的梯度控制
  • 火山引擎扣子系列
  • vr中风--数据处理模型搭建与训练2
  • NLP学习路线图(十一):词干提取与词形还原
  • HTTP/HTTPS与SOCKS5三大代理IP协议,如何选择最佳协议?
  • 长安链起链调用合约时docker ps没有容器的原因
  • WPF prism
  • Arbitrary Response Filter Design and Analysis--任意响应滤波器设计与分析(待完成)
  • DexGarmentLab 论文翻译
  • CPP中CAS std::chrono 信号量与Any类的手动实现
  • Java四种访问权限修饰符详解
  • 霹雳吧啦Wz_深度学习-图像分类篇章_1.1 卷积神经网络基础_笔记
  • 【MQTT】
  • NUMA 架构科普:双路 CPU 系统是如何构建的?
  • 快速上手shell条件测试
  • Practice 2025.5.29 —— 二叉树进阶面试题(1)
  • 聊聊 Metasploit 免杀
  • 数字人引领政务新风尚:智能设备助力政务服务
  • OpenCV计算机视觉实战(9)——阈值化技术详解
  • 【仿生系统】qwen的仿生机器人解决方案
  • AI产品风向标:从「工具属性」到「认知引擎」的架构跃迁​
  • 国芯思辰| 霍尔电流传感器AH811为蓄电池负载检测系统安全护航
  • Java 实现下载指定minio目录下的所有内容到远程机器
  • ssm学习笔记(尚硅谷) day1
  • 生成式人工智能:重构软件开发的范式革命与未来生态
  • 预处理,咕咕咕
  • Cesium 展示——获取鼠标移动、点击位置的几种方法