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

python 异常处理详解带(3分钟速通)

1.  异常处理的基本结构

异常处理的基本结构包括 try 块和 except 块。try 块中放置可能引发异常的代码,而 except 块则用于捕获和处理这些异常。

try:  # 尝试执行的代码  pass  
except ExceptionType as e:  # 如果在try块中引发了ExceptionType异常,则执行这里的代码  print(f"捕获到异常:{e}")

2.  捕获多种异常

你可以使用多个 except 块来捕获不同类型的异常,或者使用单个 except 块来捕获多种异常(通过指定异常类的元组)。

try:  # 尝试执行的代码  pass  
except ValueError as e:  print(f"捕获到ValueError异常:{e}")  
except (TypeError, ZeroDivisionError) as e:  print(f"捕获到TypeError或ZeroDivisionError异常:{e}")

3.  捕获所有异常

使用 except Exception as e 可以捕获除了程序退出异常(如 SystemExit 和 KeyboardInterrupt)之外的所有异常。

try:  # 尝试执行的代码  pass  
except Exception as e:  print(f"捕获到异常:{e}")

4.  使用 else 和 finally

  • else 块:如果没有异常发生,则执行 else 块中的代码。
  • finally 块:无论是否发生异常,finally 块中的代码都会被执行。这通常用于执行清理操作,如关闭文件或释放资源。
try:  # 尝试执行的代码  pass  
except Exception as e:  print(f"捕获到异常:{e}")  
else:  print("没有异常发生")  
finally:  print("执行清理操作")

5.  实战案例

案例 1:处理除零错误
try:  result = 10 / 0  
except ZeroDivisionError as e:  print(f"捕获到除零错误:{e}")
案例 2:处理文件读写错误
try:  with open('nonexistent_file.txt', 'r') as file:  content = file.read()  
except FileNotFoundError as e:  print(f"文件未找到:{e}")  
except Exception as e:  print(f"发生其他错误:{e}")
案例 3:使用 else 和 finally
try:  # 假设这里有一些成功的操作  print("操作成功")  
except Exception as e:  print(f"捕获到异常:{e}")  
else:  print("没有异常发生,执行else块")  
finally:  print("执行清理操作")

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 笔记本电脑无线网卡突然没有了
  • LeetCode 3133.数组最后一个元素的最小值:位运算+双指针
  • 更换域名后图片不显示
  • C++设计模式1:单例模式(懒汉模式和饿汉模式,以及多线程问题处理)
  • SD-WAN安全:在灵活性与安全性之间找到平衡
  • vue使用v-html保留原内容的缩进和换行
  • HTML静态网页成品作业(HTML+CSS)——家乡广州介绍设计制作(5个页面)
  • 23.合并K个升序链表-----力扣
  • 多元统计分析——基于R语言的单车使用情况可视化分析
  • C语言贪吃蛇之BUG满天飞
  • 提交试卷+智能生成评价
  • wpf DataTemplate 和 ControlTemplate 区别,应用举例
  • iPhone13手机照片被误删,有什么方法可以恢复吗?
  • 基于ssm+vue+uniapp的跑腿平台小程序
  • Java之迭代器的使用
  • 【技术性】Search知识
  • axios请求、和返回数据拦截,统一请求报错提示_012
  • django开发-定时任务的使用
  • HTML-表单
  • MQ框架的比较
  • nodejs调试方法
  • Theano - 导数
  • WebSocket使用
  • 百度地图API标注+时间轴组件
  • 对象引论
  • 排序算法学习笔记
  • 前端临床手札——文件上传
  • 驱动程序原理
  • 【运维趟坑回忆录 开篇】初入初创, 一脸懵
  • 长三角G60科创走廊智能驾驶产业联盟揭牌成立,近80家企业助力智能驾驶行业发展 ...
  • 京东物流联手山西图灵打造智能供应链,让阅读更有趣 ...
  • 资深实践篇 | 基于Kubernetes 1.61的Kubernetes Scheduler 调度详解 ...
  • ​LeetCode解法汇总518. 零钱兑换 II
  • (13)DroneCAN 适配器节点(一)
  • (2)Java 简介
  • (3)llvm ir转换过程
  • (51单片机)第五章-A/D和D/A工作原理-A/D
  • (Note)C++中的继承方式
  • (备忘)Java Map 遍历
  • (佳作)两轮平衡小车(原理图、PCB、程序源码、BOM等)
  • (九)信息融合方式简介
  • (三)uboot源码分析
  • (十)T检验-第一部分
  • (学习日记)2024.01.19
  • (一) springboot详细介绍
  • (转)ObjectiveC 深浅拷贝学习
  • (转)微软牛津计划介绍——屌爆了的自然数据处理解决方案(人脸/语音识别,计算机视觉与语言理解)...
  • ***通过什么方式***网吧
  • ./mysql.server: 没有那个文件或目录_Linux下安装MySQL出现“ls: /var/lib/mysql/*.pid: 没有那个文件或目录”...
  • .axf 转化 .bin文件 的方法
  • .equal()和==的区别 怎样判断字符串为空问题: Illegal invoke-super to void nio.file.AccessDeniedException
  • .NET gRPC 和RESTful简单对比
  • .net 提取注释生成API文档 帮助文档
  • .netcore 获取appsettings
  • .NET程序员迈向卓越的必由之路