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

【python机器学习】Day 25 异常处理

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

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

        借助ai写代码的时候,经常会遇到try-except的异常处理模块,这是因为大部分大模型在后训练阶段都是经过强化学习训练的,为了确保结果的正确运行,只有采取 try-except的异常处理模块才能提高模型运行成功的概率。

        日常写代码的时,大概率不会采取这些写法。

        Python的异常处理机制为程序提供了强大的容错能力。当程序在运行时遇到意外情况(即异常),程序不会直接崩溃,人们可以通过 try-except 优雅地处理这些错误,并可能继续执行后续逻辑(如果设计允许)或以可控的方式结束。

        当异常发生时,Python会创建一个异常对象 (exception object)(通常是 Exception 类的子类实例)。如果这段可能出错的代码位于 try 语句块中,程序流程会寻找并跳转到匹配的 except 语句块(如果存在)来处理这个异常。

        *except 除···之外  exception 除外*

1.try-except语句

try:#语句块1
except 异常值类型:#语句块2

2.except支持多个except语句

try:#语句块1
except异常值类型1:#语句块2
except 异常值类型2:#语句块3...
except 异常值类型n:#语句块n+1except:#语句块n+2

        从第1 到 n 个except语句后,都指定了异常类型,说明这些except所包含的语句只处理这些类型的异常,最后一个except语句没有指定异常类型,表示这个except所包含的语句块可以除列举之外的,其他类型异常

3.try-except-else-finally

try:#语句块1
except异常值类型1:#语句块2
else:#语句块3finally:#语句块4

        当try语句块1正常执行结束,且没有发生异常时,执行else中的语句块3

        finally语句块,无论try语句块1中是否发生异常,语句块4都会执行

4.异常类型

###SyntaxError (语法错误):代码不符合 Python 的语法规则

### NameError (名称错误):使用一个未被定义的变量、函数或对象的名称。

### TypeError (类型错误): 对一个不支持该操作的数据类型,执行了某个操作或函数。

### ValueError (值错误): 函数接收到的参数类型正确,但其值不是函数所需参数类型或无效。

### IndexError (索引错误): 访问序列(如列表、元组、字符串)中一个不存在的索引。

### KeyError (键错误): 访问字典中一个不存在的键。

### AttributeError (属性错误): 访问一个对象没有的属性或方法。

### ZeroDivisionError (除零错误): 将一个数字除以零(0作为被除数)

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

###  ModuleNotFoundError (导入错误):导入一个不存在的模块,或者模块存在但其中的特定名称找不到, Python 的模块加载器找不到这个模块。去安装库即可,如果是自定义的模块,配置好对应的路径

        当代码出现这类错误时,程序会立即停止执行,并打印出一个 “traceback”(回溯信息),这个信息非常重要,它会告诉你:

1. 错误类型 (e.g., NameError, TypeError)

2. 错误发生的文件名和行号

3. 导致错误的那行代码

4. 错误的简要描述

5.说明

        try-except异常只用来检测极少发生的情况,例如:检测用户输入的合规性,文件是否打开成功等。对于索引字符串超过范围应该在程序中采用 if 语句直接判断,而避免通过异常处理来应对这种可能发生的“错误”

        面向商业应用的软件产品,稳定性和可靠性是最重要的衡量指标之一,这类软件也不会滥用try-except语句。因为try-except语句会影响代码的可读性,增加代码维护难度,因此只在关键地方采用try-except语句处理可能发生的异常。

        更多的使用场景需要自己探索积累

相关文章:

  • 日本动漫风格人像街拍Lr调色预设,手机滤镜PS+Lightroom预设下载!
  • 《Python星球日记》 第71天:命名实体识别(NER)与关系抽取
  • Java—封装、继承与多态
  • 通过Ollama读取模型
  • CSS 锚点滑动效果的技术
  • 【C/C++】高阶用法_笔记
  • Tensorflow2保存和加载模型
  • 【Redis】缓存穿透、缓存雪崩、缓存击穿
  • Java 异常处理之 BufferUnderflowException(BufferUnderflowException 概述、常见发生场景、避免策略)
  • C 语言学习笔记(8)
  • 因果推断 | 用SHAP分值等价因果效应值进行反事实推理
  • 【Linux】掌握 setsid:让进程脱离终端独立运行
  • 东芝新四款产品“TB67Z830SFTG、TB67Z830HFTG、TB67Z850SFTG、TB67Z850HFTG系列三相栅极驱动器ic三相栅极驱动器IC
  • 软件测试--入门
  • 【Linux】Ext系列文件系统
  • 鸿蒙-5.1.0-release构建编译环境
  • Oracle中的select1条、几条、指定范围的语句
  • 每日算法-250514
  • 【golang】网络数据包捕获库 gopacket
  • 嵌入式系统中WAV音频文件格式详解与处理实践
  • 俄方代表团抵达土耳其,俄乌直接谈判有望于当地时间上午重启
  • 经常口干口渴的人,要当心这些病
  • 夜读丨读《汉书》一得
  • 珠峰窗口期5月开启 普通人登一次有多烧钱?
  • 总没胃口,一吃就饱……别羡慕,也可能是生病了
  • 重庆三峡学院回应“中标价85万设备网购300元”:已终止采购