Python错误和异常

yolov7的dataset代码详解 yolov7dataset代码详解 阅读详情

错误和异常

语法错误

解析错误,是因为不符合python语法。

SyntaxError: invalid syntax

异常

即在语句和表达式在语法上是正确的,但是在执行时,它还是可能发生错误。这种执行中检测到的错误成为“异常”。

错误信息的最后一行告诉我们程序遇到了什么类型的错误。

处理异常

可以编写处理所选异常的程序。

try ... except....

while True:
    try:
        x = int(input("请输入一个整数:"))
        break
    except ValueError:
        print("错误!请输入一个整数。再试一次...")

try 语句的工作原理如下。

  • 首先,执行 try 子句 (try 和 except 关键字之间的(多行)语句)。
  • 如果没有异常发生,则跳过 except 子句 并完成 try 语句的执行。
  • 如果在执行try 子句时发生了异常,则跳过该子句中剩下的部分。然后,如果异常的类型和 except 关键字后面的异常匹配,则执行 except 子句 ,然后继续执行 try 语句之后的代码。
  • 如果发生的异常和 except 子句中指定的异常不匹配,则将其传递到外部的 try 语句中;如果没有找到处理程序,则它是一个 未处理异常,执行将停止并显示如上所示的消息。

一个try语句可能有多个except子句,可以指定不同异常的处理程序。处理程序只处理相应的 try 子句中发生的异常,而不处理同一 try 语句内其他处理程序中的异常(?)。一个 except 子句可以将多个异常命名为带括号的元组,例如:

except (RuntimeError, TypeError, NameError):
    pass

try … except 语句有一个可选的 else 子句,在使用时必须放在所有的 except 子句后面。对于在try 子句不引发异常时必须执行的代码来说很有用。例如:

for arg in sys.argv[1:]:
    try:
        f = open(arg, 'r')
    except OSError:
        print('cannot open', arg)
    else:
        print(arg, 'has', len(f.readlines()), 'lines')
        f.close()

抛出异常raise

raise语句可以强制发生指定的异常。

>>>raise NameError('HiThere')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: HiThere

raise唯一的参数就是要抛出的异常。这个参数必须是异常实例或者是一个异常类(派生自 Exception 的类)。如果传递的是一个异常类,它将通过调用没有参数的构造方法来隐式实例化。
如果你需要确定是否引发了异常但不打算处理它,则可以使用更简单的 raise 语句形式重新引发异常

>>> try:
...     raise NameError('HiThere')
... except NameError:
...     print('An exception flew by!')
...     raise
...
An exception flew by!
Traceback (most recent call last):
  File "<stdin>", line 2, in <module>
NameError: HiThere

异常判断assert

断言

assert 判断表达式
# 若表达为真时,继续执行下面代码
# 若表达为假时,抛出异常。
# 等同于:
if not 判断表达式:
    raise AssertionError

用户自定义异常

定义清理操作

try语句中可选子句finally,用于定义必须在所有情况下执行的清理操作。

如果存在 finally 子句,则 finally 子句将作为 try 语句结束前的最后一项任务被执行。 finally 子句不论 try 语句是否产生了异常都会被执行。 以下几点讨论了当异常发生时一些更复杂的情况:

  • 如果在执行 try 子句期间发生了异常,该异常可由一个 except 子句进行处理。 如果异常没有被某个 except 子句所处理,则该异常会在 finally 子句执行之后被重新引发。
  • 异常也可能在 except 或 else 子句执行期间发生。 同样地,该异常会在 finally 子句执行之后被重新引发。
  • 如果在执行 try 语句时遇到一个 break, continue 或 return 语句,则 finally 子句将在执行 break, continue 或 return 语句之前被执行。
  • 如果 finally 子句中包含一个 return 语句,则返回值将来自 finally 子句的某个 return 语句的返回值,而非来自 try 子句的 return 语句的返回值。
>>> def divide(x, y):
...     try:
...         result = x / y
...     except ZeroDivisionError:
...         print("division by zero!")
...     else:
...         print("result is", result)
...     finally:
...         print("executing finally clause")
...
>>> divide(2, 1)
result is 2.0
executing finally clause
>>> divide(2, 0)
division by zero!
executing finally clause
>>> divide("2", "1")
executing finally clause
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<stdin>", line 3, in divide
TypeError: unsupported operand type(s) for /: 'str' and 'str'

finally子句在任何情况都会被执行。两个字符串相除所引发的TypeError不会由except子句处理,因此会在finally子句执行后被重新引发。
在实际应用程序中,finally子句对于释放外部资源(例如文件或者网络连接)非常有用,无论是否成功使用资源。

预定义的清理操作

某些对象定义了不再需要该对象时要执行的标准清理操作,无论使用该对象的操作是成功还是失败。

例如尝试打开一个文件并把其内容打印到屏幕上:

for line in open("myfile.txt"):
    print(line,end=' ')

这个代码的问题在于,它在这部分执行完之后,会使文件一段不确定的时间处于打开状态。这在简单的脚本中不是问题,但是对于较大的应用程序来说可能是个问题。 with语句允许像文件这样的对象能够以一种确保它们得到及时和正确的清理的方式使用。

with open("myfile.txt") as f:
    for line in f:
        print(line,end="")
# 上下文管理器

执行完语句后,即使在处理时遇到问题,文件f也始终会关闭。和文件一样,提供预定义清理操作的对象将在其文档中指出这一点。

【Python】错误和异常 在任何编程语言中,错误处理都是构建健壮、可靠应用程序的基石。Python 提供了一套强大而灵活的异常处理机制。但在深入这些机制之前,我们必须清晰地理解什么是错误,什么是异常,以及它们在Python世界中的具体含义和分类。虽然在日常交流中,“错误”和“异常”这两个词经常互换使用,但在编程的上下文中,特别是Python中,它们既有联系也有细微但重要的区别。语法错误,也称为解析错误 (Parsing Errors),是Python解释器在解析代码(即读取并理解你的代码结构)的阶段发现的问题。这些错误意味着你的代码 阅读详情

相关推荐

Python 处理错误和异常

在 Python 中,我们可以通过创建一个新类来定义自己的自定义异常,该类必须派生于内置的Exception类或其子类。为了说明这个概念,我们将修改之前的示例,定义两个自定义异常类来替换内置的TypeError和Exception错误类型。新的自定义异常类将从TypeError和Exception类派生。super().__init__("%r 不是数字,只充许数字。" % value)super().__init__("%r 是负数,不支持负数。

dowhileprogramming的专栏 1189

python 引发报错 raise Exception(“...“)

python 引发报错 raise Exception("实参S不能含有重复索引")

Caiqiudan的博客 1107

Windows MCP 安装教程:让 AI 代理与 Windows 系统无缝交互

通过以上步骤,你已经成功安装和配置了 Windows MCP 服务。现在你的 Cursor 编辑器可以通过 MCP 协议与 Windows 系统进行深度交互,AI 代理能够:启动和控制应用程序执行系统命令自动化 UI 操作获取系统状态信息这为 AI 辅助开发和工作流程自动化提供了强大的基础。如果你在使用过程中遇到任何问题,欢迎在评论区讨论或查看项目的官方文档。

chenchihwen的专栏 3349

YOLOv7中的数据集处理【代码分析】

本文章主要是针对yolov7中数据集处理部分代码进行解析(和yolov5是一样的),也是可以更好的理解训练中送入的数据集到底是什么样子的。数据集的处理离不开两个类,(from torch.utils.data.dataloader import DataLoader),不论什么样的算法,在处理数据集的时候都需要继承这两个类来重写自己的数据集(在我另外的文章中有讲这两个类的使用)。

z240626191s的博客 7863

Visual Studio 2015 插件开发 从入门到放弃(一)

必需知识:C#和Visual Studio (1)安装 Visual Studio 2015 的时候选择 Visual Studio 扩展性工具(Visual Studio Extensibility Tools)。对于已经安装好 Visual Studio 2015 的小伙伴,可以找VS2015的安装包,或者在程序与功能中找VS2015双击,在VS2015界面中选择 修改,再选择

AncientPeople的博客 2万+

FPGA可重构技术

介绍FPGA 可重构技术的实现方法,包括全局重构和部分重构

航天领域资深码农,型号经验丰富,一线干货分享 1989

YoloV5代码详细解读

本文重点描述开源YoloV5代码实现的细节,不会对YoloV5的整体思路进行介绍,整体思路可以参考江大白的博客 江大白:深入浅出Yolo系列之Yolov3&Yolov4&Yolov5&Yolox核心基础知识完整讲解2644 赞同 · 332 评论文章正在上传…重新上传取消 讲解的很细致,建议阅读之后再来看本篇文章。 声明:本文有些图摘自江大白的上述博客,如有侵权,请联系本人删除 本文所使用的代码为2021-08-23日flok的官网YoloV5代码仓 GitHub - xu

浩瀚之水的专栏 2万+

MCGS触摸屏数据记录与U盘导出配置全解析

在工业自动化现场,数据记录是设备运行状态分析与故障追溯的基础。HMI触摸屏作为人机交互核心,不仅承担实时监控任务,还负责过程数据的存储与导出。理解数据采集周期、存盘机制与存储介质的匹配原理,能帮助工程师高效配置数据记录功能。合理运用定时存盘、存盘组与U盘导出,可支撑设备趋势分析、报表生成及事故排查。本文以MCGS触摸屏为例,详解数据记录的完整组态流程,并汇总常见配置陷阱与排查思路,为现场调试与长期运维提供可落地的技术参考。

weixin_34253126的博客 459

yolov5问题解决记录贴

随手记,以后有时间再整理吧 问题一:环境配置后cuda与pytorch不符 detect: weights=yolov5s.pt, source=data/images, imgsz=[640, 640], conf_thres=0.25, iou_thres=0.45, max_det=1000, device=, view_img=False, save_txt=False, save_conf=False, save_crop=False, nosave=False, classes=None,

HOLEYU的博客 2万+

剪映自动化工具来了:AI帮你自动剪辑成片

🎬分享一个剪映自动化剪辑工具!AI 自动帮你完成从写文案、配音、加字幕、选音乐、上特效到最终导出的整套流程🎈

XiaoqiangClub的博客 855

hadoop 切片机制详解

hadoop切片机制详解

congge 1万+

python异常和错误有什么区别_python的错误和异常

python错误和异常错误错误分为语法错误和逻辑错误语法错误>>> ifFile "", line 1if^SyntaxError: invalid syntax程序执行过程中,python解释器会检测你的程序是否存在语法错误,如果程序出错python解释器会指出出错的一行,并且在最先找到的 错误的文职标记了一个小小的箭头。逻辑错误>>> 1/0Traceback (most recent cal...

weixin_39852688的博客 2728

Claude Code、Codex、Gemini CLI、OpenCode 和 OpenClaw 配置管理太麻烦?试试这个统一管理工具

还在为 Claude Code、Codex、Gemini CLI 等 AI CLI 配置烦恼?🤯 这款桌面工具支持五大助手统一管理,一键切换 50+ 服务商,MCP 和 Skills 集中管理 🛠️,跨平台支持,让你的 AI 编程更高效 ⚡

XiaoqiangClub的博客 912

Python的错误和异常,异常的处理

该篇讲述如何正确理解和有效处理错误与异常

qq_52758588的博客 1772

Java 新纪元 — JDK 25 + Spring Boot 4 全栈实战(十九):微服务实战——Boot 4 + Spring Cloud 2026.x,构建高并发电商分布式系统

Component@Slf4j@Autowired// 白名单路径@Override// 白名单放行// 提取Token// 传递用户信息到下游服务.mutate().build();@Override// 最高优先级if (bearer!@Component技术点Boot 3 时代Boot 4 时代提升线程模型平台线程池(200线程上限)虚拟线程(百万级并发)50x+服务通信。

qq_17204557的博客 185

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Python异常和错误

廖雪峰Python基础教程和慕课网视频笔记 在程序运行过程中,总会遇到各种各样的错误。 1.有的错误是程序编写有问题造成的,比如本来应该输出整数结果输出了字符串,这种错误我们通常称之为bug,bug是必须修复的。 2.有的错误是用户输入造成的,比如让用户输入email地址,结果得到一个空字符串,这种错误可以通过检查用户输入来做相应的处理。 3.还有一类错误是完全无法在程序运行过程中...

yangyang的专栏 3万+

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

python中错误和异常区别

这是由于程序占用的内存超出了系统所能提供的范围。比如,当你试图创建一个极大的列表或者其他数据结构,耗尽了内存资源时就会出现这个错误。,这是一个运行时异常,因为在数学上除数不能为 0,程序的这个操作不符合预期的数学规则。块用于确保文件最终被关闭,即使在读取文件过程中出现了文件不存在的异常。,因为这是一个基本的语法违反。这种错误会阻止程序的正常编译或加载。这里遗漏了冒号,Python 解释器在解析代码时就会抛出。这段代码尝试读取一个不存在的文件,所以会出现。

m0_52951519的博客 1229

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Python的错误和异常

python的错误和异常

一个想交朋友的陌生人 1469

python异常和错误的区别_python的错误和异常怎么区别

python异常和错误有什么区别1. 错误从软件方面来说,错误是语法或是逻辑上的。语法错误指示软件的结构上有错误,导致不能被解释器解释或编译器无法编译。这些错误必须在程序执行前纠正。当程序的语法正确后,剩下的就是逻辑错误了。逻辑错误可能是由于不完整或是不合法的输入所致;在其他情况下,还可能是逻辑无法生成,计算,或是输出结果需要的过程无法执行。这些错误通常分别被称为域错误和范围错误。当 Python...

weixin_39548740的博客 718

python错误和异常有什么区别_python中异常和错误的区别

错误和异常概念错误:1.语法错误:代码不符合解释器或者编译器语法2.逻辑错误:不完整或者不合法输入或者计算出现问题异常:执行过程中出现万体导致程序无法执行1.程序遇到逻辑或者算法问题2.运行过程中计算机错误(内存不够或者IO错误)错误和异常区别错误:代码运行前的语法或者逻辑错误,语法错误在执行前修改,逻辑错误无法修改异常分为两个步骤:1.异常产生,检查到错误且解释器认为是异常,抛出异常;2.异常处...

weixin_39951396的博客 1256

python异常和错误的区别_python:错误、异常

1、错误语法错误:代码不符合解释器或者编译器语法,例如 缩进字符、循环语句的冒号逻辑错误:不完整或不合法输入、算法问题,比如0作除数2、异常程序遇到逻辑或者算法问题运行过程中计算机错误(内存不够或IO错误)这两个或抛出异常,如果没有手动对其进行处理,那么此异常就会被解释器捕获,处理的方法为忽略或者终止程序3、错误和异常的区别错误是代码运行前错误是非正常的,不应该出现的,比如:缩进、循环语句的冒号异...

weixin_39620099的博客 4014

【Python】一文总结Python中常见错误 异常及异常处理机制

除了系统中提供的一些异常之外,我们也可以根据业务需要抛出自定义的异常,例如要求传递过来的字符串长度在6到10 位之间,不满足要求时,抛出异常。有时候,我们捕获到了异常,但暂时不知道如何处理,此时也可以抛出异常,让其他调用者进行处理。Python中提供了raise语句允许用户主动抛出异常,raise关键字后面需要提供一个异常实例或者异常类,如果传递的是异常类,则会调用无参数的构造方法来实例化对象。如果捕获到了异常,但是暂时不处理,可以直接通过raise语句抛出异常,此时raise关键字后面什么都不用写。

Gavin_915的博客 1152

python中异常和错误是同一个概念吗_python异常和错误有什么区别

python异常和错误有什么区别1. 错误从软件方面来说,错误是语法或是逻辑上的。语法错误指示软件的结构上有错误,导致不能被解释器解释或编译器无法编译。这些错误必须在程序执行前纠正。当程序的语法正确后,剩下的就是逻辑错误了。逻辑错误可能是由于不完整或是不合法的输入所致;在其他情况下,还可能是逻辑无法生成,计算,或是输出结果需要的过程无法执行。这些错误通常分别被称为域错误和范围错误。当 Python...

weixin_29035147的博客 2686

python异常和错误的区别_python中异常和错误的区别

错误和异常概念错误:1.语法错误:代码不符合解释器或者编译器语法2.逻辑错误:不完整或者不合法输入或者计算出现问题异常:执行过程中出现万体导致程序无法执行1.程序遇到逻辑或者算法问题2.运行过程中计算机错误(内存不够或者IO错误)错误和异常区别错误:代码运行前的语法或者逻辑错误,语法错误在执行前修改,逻辑错误无法修改异常分为两个步骤:1.异常产生,检查到错误且解释器认为是异常,抛出异常;2.异常处...

weixin_39581099的博客 311

python中异常和错误是同一个概念吗_一文搞懂Python错误和异常

写Python代码的小伙伴不可避免地会遇到代码执行错误和异常,这次就来详细且不失通俗地总结一下python中的错误和异常。先抛出两个问题:什么是Python错误和异常?如何处理Python错误和异常?1、语法错误语法错误可能是初学者最常遇到的,如下面熟悉的画面:SyntaxError:invalidsyntax语法错误又称解析错误,又有老哥会问什么是解析错误?简单来说是基本语法结构写错了,如:...

weixin_34539480的博客 1622

异常和错误有什么区别python_Python 错误和异常

作为 Python 初学者,在刚学习 Python 编程时,经常会看到一些报错信息,在前面我们没有提及,这章节我们会专门介绍。Python 有两种错误很容易辨认:语法错误和异常。语法错误Python 的语法错误或者称之为解析错,是初学者经常碰到的,如下实例>>>whileTrueprint('Hello world')File"", line1, in?whileTrueprin...

weixin_39578197的博客 525
上一篇: Python运算符、控制语句和函数
下一篇: Python常用方法(字符串、列表、map、filter等)
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

努力生活的黄先生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值