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

Day25 异常处理

1.异常处理机制

(1)什么是异常?

异常指的是程序运行过程中发生的意外错误

比如:

尝试用 0 除以一个数(除数不能为 0);

访问不存在的文件或变量;

网络请求超时;

用户输入了无效的数据(如用字母代替数字)。

这些情况会导致程序突然终止并报错(比如显示一长串红色的错误信息),而异常处理机制就是用来捕获这些错误并处理它们的。

(2)异常处理的核心逻辑:try - catch(尝试 - 捕获)

大多数编程语言(如 Java、Python、JavaScript 等)都有类似的异常处理结构,核心由 trycatch(或 except)、finally 三个部分组成。

try 块:尝试执行可能出错的代码

把「可能引发异常的代码」放在 try 块中。如果代码正常运行,就跳过 catch 块;如果出错,就「抛出异常」并跳转到对应的 catch 块。

try:num = int(input("请输入一个整数:"))  # 若用户输入字母,会引发 ValueError 异常result = 10 / num  # 若用户输入 0,会引发 ZeroDivisionError 异常print("计算结果:", result)
except:  # 捕获所有异常(初学者可先这样写,后续再细化)print("输入有误或计算出错!")

catch(或 except)块:捕获并处理异常

当 try 块中的代码抛出异常时,程序会立即跳转到 catch 块,执行预先写好的「错误处理逻辑」。

可以针对不同类型的异常写多个 catch 块(如先处理文件不存在异常,再处理数值错误);

可以获取异常的具体信息(如错误原因),方便调试。

finally 块:可选的「清理操作」

无论 try 块是否发生异常,finally 块中的代码都会执行。常用于释放资源(如关闭文件、断开网络连接等)。

(3)为什么需要异常处理?

防止程序崩溃

没有异常处理时,程序遇到错误会直接终止(比如用户输入错误导致软件闪退);有了异常处理,程序可以继续运行并提示用户。

提升用户体验

用友好的提示(如 “请输入有效数字”)代替晦涩的错误信息,让用户知道哪里出了问题。

方便调试和维护

可以记录异常细节(如错误类型、发生位置),帮助开发者快速定位问题。

2.debug过程中的各类报错


3.try-except机制

try:把你认为可能会出错的代码放在这里。

except:如果 try 块里的代码真的出错了(从出错开始就不会继续执行try之后的代码了),Python 就会跳到 except 块里执行这里的代码,而不是崩溃。

4.try-except-else-finally机制

try: 包含可能引发异常的代码。

except: 处理在 try 块中发生的特定异常。

else: (可选)如果 try 块中没有发生任何异常,则执行此代码块。

finally: (可选)无论 try 块中是否发生异常,总会执行此代码块。

为什么使用 else?

清晰性: 它清楚地将“主要尝试的操作(可能出错)”与“操作成功后的后续步骤”分开。

避免意外捕获: 如果把“成功后的后续步骤”也放在 try 块里,而这些步骤本身也可能引发 try 块想要捕获的同类型异常,那么就会导致逻辑混淆。else 块中的代码不会被同一个 try 块的 except 子句捕获。

@浙大疏锦行

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

相关文章:

  • sizeof 与strlen的区别
  • Puppeteer测试框架 - Node.js
  • 解决transformers.adapters import AdapterConfig 报错的问题
  • Java中的抽象类
  • 【Redis】持久化
  • Redis知识体系
  • 【深度学习】表示学习:深度学习的数据解构与重构艺术
  • Effective Java 第三版 第二三章总结
  • Selenium自动化操作
  • Java中双端队列的多种实现类详解
  • 力扣面试150题--课程表
  • LabVIEW多道心电记录仪
  • 【靶场】XXE-Lab xxe漏洞
  • Java严格模式withResolverStyle解析日期错误及解决方案
  • PLC入门【1】PLC的简单介绍(教学软件:FX-TRN-BEG-C)
  • Spring Boot中Bean注入方式对比与最佳实践
  • AUTOSAR实战教程--开放式通用DoIP刷写工具OpenOTA开发计划
  • 分类场景数据集大全「包含数据标注+训练脚本」 (持续原地更新)
  • MCP Tool模块详解
  • 听写流程自动化实践,轻量级教育辅助
  • 【原创】基于视觉模型+FFmpeg+MoviePy实现短视频自动化二次编辑+多赛道
  • Unity中如何播放视频
  • 数据结构——F/图
  • 一个一键生成知识讲解类教育视频的ai工具
  • 从零开始打造 OpenSTLinux 6.6 Yocto 系统(基于STM32CubeMX)(十一)
  • 【MySQL系列】MySQL 导出表数据到文件
  • 内存分配基础:修改SCT文件的简单例子
  • JUC笔记(上)-复习 涉及死锁 volatile synchronized CAS 原子操作
  • 【Ftrace 专栏】Ftrace 基础使用
  • LangChain知识库管理后端接口:数据库操作详解—— 构建本地知识库系统的基础《二》