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

day25

今天我们主要围绕以下几个核心知识点展开:

异常处理机制:为什么我们需要它?

Debug过程中的各类报错:认识那些“红色”的警告信息。

try-except机制:最核心、最常用的异常处理结构。

try-except-else-finally机制:一个功能更全面的“豪华套餐”。

1. 异常处理机制是什么?

想象一下你在按照食谱做饭。如果食谱要求你加盐,但你发现盐罐是空的,这时你该怎么办?是直接放弃整道菜,还是想办法找点盐或者用其他调料替代?

在编程中,这种“盐罐是空的”的情况就叫做异常(Exception)。它是在程序运行期间发生的、中断了正常指令流的事件。而**异常处理(Exception Handling)**就是我们预先设计好的一套应对方案,用来处理这些意外,而不是让整个程序直接“罢工”(崩溃)。

对于机器学习任务来说,你可能会遇到各种各样的数据或模型问题,良好的异常处理能确保你的训练或预测流程不会因为一些小问题而全盘中断。

2. Debug过程中的常见报错

在学习编程的路上,我们每天都会和各种“报错”信息打交道。这些红色的文字不是你的敌人,而是帮助你成长的“提示器”。看懂它们,是解决问题的第一步。

这里是一些常见的Python报错“拦路虎”:

FileNotFoundError:试图打开一个不存在的文件。

TypeError:对不同类型的变量进行了不支持的操作(比如 5 + "hello")。

ValueError:传入了函数无法处理的参数值(比如 int("abc"))。

IndexError:试图访问列表中一个不存在的索引位置。

KeyError:试图访问字典里一个不存在的键。

当看到报错时,不要慌张。仔细阅读提示信息,它通常会告诉你错误发生在哪一行以及是什么类型的错误。

3. try-except机制:核心武器

try-except 是Python中最基本也是最强大的异常处理工具。它的逻辑非常直白:尝试(try) 做某件事,如果出了异常(except),就按照我指定的方式来处理。

我们把可能会出错的 open() 操作放进了 try 块。

如果 my_data.csv 文件存在,try 块中的代码会顺利执行,except 块则会被完全跳过。

如果文件不存在,程序会捕捉到 FileNotFoundError,然后执行 except 块中的 print 语句,优雅地提示用户,而不是用一堆红色报错信息吓到他们。最重要的是,程序会继续向下执行。

4. try-except-else-finally机制:全能套餐

有时候,我们需要更精细的流程控制。比如,“没出错的话要怎么做?”以及“无论如何最后都要做什么?”

else:当 try 块中的代码 没有发生任何异常 时,else 块的代码才会被执行。

finally:无论是否发生异常,finally 块中的代码 总会被执行。它非常适合用来做一些清理工作,比如关闭文件或者数据库连接。

基本语法与示例

让我们来看一个机器学习场景中可能遇到的例子:数据预处理中的除法操作。

try 块尝试执行除法。在这个例子中,因为 feature_b 是0,所以会触发 ZeroDivisionError。

程序捕捉到异常,执行 except 块,打印错误信息并给 ratio 赋一个默认值0。

因为发生了异常,所以 else 块被跳过。

最后,finally 块被执行,打印出结束信息。

整个程序得以继续,并且我们得到了一个经过处理的 ratio 值,保证了后续流程的稳定。

 

 

http://www.dtcms.com/a/301749.html

相关文章:

  • EPOLLONESHOT 深度解析:Linux epoll 的单次触发机制
  • 单表查询-or优化
  • SpringIoCDI
  • Java 集合进阶:从 Collection 接口到迭代器的实战指南
  • AI入门学习-模型评估示例讲解
  • 解决浏览器无法删除cookie的问题
  • JavaSE知识点(2)
  • mybatis的insert(pojo),会返回pojo吗
  • 2507C++,APC可以干的活
  • Leetcode 3628. Maximum Number of Subsequences After One Inserting
  • mybatis-plus逻辑删除配置
  • 高可用集群KEEPALIVED实战解析
  • Gradio全解8——ChatInterfaceChatbot:聊天界面类与聊天机器人(2)——ChatInterface的自定义函数和界面
  • 芯片库和标准库寻找的方法
  • print(“\033[31m红\033[32m绿\033[34m蓝\033[0m默认色“)
  • 随机密码生成
  • Spring IOC 容器 **默认注册 Bean** 的 8 条规则
  • 网络服务综合项目
  • 数据结构基础内容(第七篇:堆、哈夫曼树)
  • SABR-Net
  • Linux 系统文件夹结构及用途说明
  • 《频率之光:共振之战》
  • 题解:CF1010C Border
  • Python异常处理:金融风控系统中的救命盾牌
  • Web开发系列-第13章 Vue3 + ElementPlus
  • 第十二讲:C++继承
  • 每日算法刷题Day55:7.27:leetcode 复习完第K小/大+栈4道题,用时1h50min
  • Datawhale 科大讯飞AI大赛(模型蒸馏)
  • 个人笔记HTML5
  • 聊聊回归测试的应对策略