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

Python训练营打卡 Day25

知识点回顾:

  1. 异常处理机制
  2. debug过程中的各类报错
  3. try-except机制
  4. try-except-else-finally机制

在即将进入深度学习专题学习前,我们最后差缺补漏,把一些常见且重要的知识点给他们补上,加深对代码和流程的理解。

作业:理解今日的内容即可,可以检查自己过去借助ai写的代码是否带有try-except机制,以后可以尝试采用这类写法增加代码健壮性。

——————————————————————————————————————————

一、异常处理机制

1、基本介绍

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

  • except子句:用于捕获和处理 try 子句中产生的异常。当try块里的代码真的出错了,就跳到except块里执行这里的代码。

2、异常处理的作用

  • 提高程序的健壮性和可靠性 :在程序运行过程中,可能会遇到各种意外情况,如文件不存在、网络连接中断、用户输入错误等。通过使用异常处理机制,可以捕获这些异常并进行相应的处理,使程序能够继续正常运行或以一种合理的方式退出,而不会因为异常而导致程序崩溃。

  • 提高程序的可维护性和可读性 :将异常处理代码集中在一个地方,可以使程序的主逻辑更加清晰,易于理解和维护。同时,通过使用适当的异常类型和处理方式,可以使程序的结构更加合理,提高程序的可读性和可维护性。

二、debug过程中的各类报错

  • SyntaxError:语法错误,代码不能正确解析,如拼写错误或缺少冒号、括号等。

  • NameError:尝试访问一个未定义的变量或函数,如变量未赋值就使用。

  • TypeError:操作或函数被应用于不适当类型的对象,如对字符串和整数进行数值运算。

  • IndexError:序列索引超出范围,如访问列表中不存在的索引。

  • KeyError:字典中不存在指定的键。

  • ValueError:函数接收到具有正确类型但值不合适的参数,如将字符串转换为整数时输入的不是数字字符串。

  • ZeroDivisionError:除数为零时触发。

  • AtrributeError:属性错误,尝试访问一个对象没有的属性或方法。

  • FileNotFoundError:文件未找到错误,尝试打开一个不存在的文件(通常是在读模式下),或者路径不正确

  • FileModuleNotFoundError:导入错误,尝试导入一个不存在的模块。去安装库即可,如果是自定义的模块,配置好对应的路径

三、try-except机制

print("--- 使用 try-except 捕获 ZeroDivisionError ---")
numerator = 10
denominator = 0try:print("尝试进行除法运算...")result = numerator / denominator # 潜在的风险代码print(f"计算结果是: {result}") # 如果上面出错,这行不会执行
except ZeroDivisionError:print("发生了一个除以零的错误!")result = "未定义 (除以零)" # 可以给一个默认值或提示print(f"程序继续执行... 最终结果的记录为: {result}")

print("--- 使用 try-except 捕获 TypeError ---")
x = "Total items: "
y = 5 # 假设这是一个从某处获取的数字try:print("尝试连接字符串和数字...")message = x + y # 潜在的 TypeErrorprint(f"最终消息: {message}")
except TypeError:print("类型错误!不能直接将字符串和数字相加。")print("尝试将数字转换为字符串进行连接...")message = x + str(y) # 修正操作print(f"修正后的消息: {message}")print(f"程序继续... 生成的消息是: {message}")

 

四、try-except-else-finally机制

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

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

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

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

print("--- try-except-else 示例 ---")def safe_divide(a, b):print(f"\n尝试计算 {a} / {b}")try:result = a / bexcept ZeroDivisionError:print("错误:除数不能为零!")return None # 或者其他表示失败的值except TypeError:print("错误:输入必须是数字!")return Noneelse:# 只有当 try 块中的 a / b 成功执行时,这里才会执行print("除法运算成功!")print(f"结果是: {result}")# 可以在这里进行基于成功结果的进一步操作print(f"结果的两倍是: {result * 2}")return result# 测试用例
safe_divide(10, 2)  # 成功
safe_divide(10, 0)  # ZeroDivisionError
safe_divide("10", 2) # TypeError (如果我们不先做类型转换的话)
safe_divide(20, "abc") # TypeError

@浙大疏锦行

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

相关文章:

  • 电路图识图基础知识-电气符号(二)
  • 图片压缩工具 | 需求思考及桌面应用开发技术选型
  • 2025电工杯数学建模竞赛A题 光伏电站发电功率日前预测问题 完整论文+python代码发布!
  • git 暂存功能使用
  • 从数学融智学视域系统地理解《道德经》:前三十七章,道法自然
  • Linux `clear` 命令与 Ctrl+L 快捷键的深度解析与高阶应用指南
  • 爬虫IP代理技术深度解析:场景、选型与实战应用
  • 缓存穿透解析
  • 20250523-BUG:无法加载“GameLib/Framework.h“头文件(已解决)
  • 【window QT开发】简易的对称密钥加解密工具(包含图形应用工具和命令行工具)
  • esp32-idf框架学习笔记/教程
  • 力扣509题:斐波那契数列的解法与代码注释
  • pytdx数据获取:在线获取和离线获取(8年前的东西,还能用吗?)
  • RESTful API 在前后端交互中的作用与实践
  • 晶圆隐裂检测提高半导体行业效率
  • Python之PyCharm安装及使用教程
  • MySQL强化关键_015_存储过程
  • YOLOv8检测头代码详解(示例展示数据变换过程)
  • 【信息系统项目管理师】第17章:项目干系人管理 - 43个经典题目及详解
  • PyTorch高阶技巧:构建非线性分类器与梯度优化全解析​
  • 2025电工杯:光伏电站发电功率日前预测问题 第一问基于历史功率的光伏电站发电特性 -完整matlab代码
  • I.MX6ULL_Linux_系统篇(26) buildroot分析
  • Python 大模型知识蒸馏详解,知识蒸馏大模型,大模型蒸馏代码实战,LLMs knowledge distill LLM
  • stm32上拉电阻,1K,4.7K,5.6K,10K怎么选?
  • 职业规划:动态迭代的系统化路径
  • javaScirpt学习第五章(函数)-第一部分
  • 【Web前端】JavaScript入门与基础(一)
  • WebStorm 高效快捷方式全解析
  • 11.5 Python+LangGraph智能代理开发:节点设计与业务流实战全解析
  • 【通用智能体】smolagents/open_deep_research:面向开放式研究的智能体开发框架深度解析