高能!全网最全的Python异常归纳和处理方法,建议收藏

【Python】异常处理 要理解 Python 异常,我们首先需要将视野拓宽到计算机硬件层面。在计算机体系结构中,“异常”并非编程语言独有的概念,它根植于 CPU 的设计哲学之中。在最低层,CPU 通过“中断(Interrupt)”来响应外部事件。中断是一种异步事件,它会打断 CPU 当前正在执行的指令序列,强制 CPU 跳转到预先定义好的“中断服务例程(Interrupt Service Routine, ISR)”去处理这个事件。例如:这些硬件中断是 CPU 与外部设备高效协作的基础。它们使得 CPU 无需不断地“轮询”设备状态 阅读详情

相信很多学习编程的小伙伴都曾为运行报错抓耳捞腮,不知所措过(小编也是o(╥﹏╥)o)。常常一大堆报错信息出现在屏幕下方,看得人云里雾里的不知所云。今天,小编就来给大家分享一下python的常见异常,小伙伴火速收藏起来吧!

python标准异常

异常名称描述
BaseException所有异常的基类
SystemExit解释器请求退出
KeyboardInterrupt用户中断执行(通常是输入^C)
Exception常规错误的基类
StopIteration迭代器没有更多的值
GeneratorExit生成器(generator)发生异常来通知退出
StandardError所有的内建标准异常的基类
ArithmeticError所有数值计算错误的基类
FloatingPointError浮点计算错误
OverflowError数值运算超出最大限制
ZeroDivisionError除(或取模)零 (所有数据类型)
AssertionError断言语句失败
AttributeError对象没有这个属性
EOFError没有内建输入,到达EOF 标记
EnvironmentError操作系统错误的基类
IOError输入/输出操作失败
OSError操作系统错误
WindowsError系统调用失败
ImportError导入模块/对象失败
LookupError无效数据查询的基类
IndexError序列中没有此索引(index)
KeyError映射中没有这个键
MemoryError内存溢出错误(对于Python 解释器不是致命的)
NameError未声明/初始化对象 (没有属性)
UnboundLocalError访问未初始化的本地变量
ReferenceError弱引用(Weak reference)试图访问已经垃圾回收了的对象
RuntimeError一般的运行时错误
NotImplementedError尚未实现的方法
SyntaxErrorPython 语法错误
IndentationError缩进错误
TabErrorTab 和空格混用
SystemError一般的解释器系统错误
TypeError对类型无效的操作
ValueError传入无效的参数
UnicodeErrorUnicode 相关的错误
UnicodeDecodeErrorUnicode 解码时的错误
UnicodeEncodeErrorUnicode 编码时错误
UnicodeTranslateErrorUnicode 转换时错误
Warning警告的基类
DeprecationWarning关于被弃用的特征的警告
FutureWarning关于构造将来语义会有改变的警告
OverflowWarning旧的关于自动提升为长整型(long)的警告
PendingDeprecationWarning关于特性将会被废弃的警告
RuntimeWarning可疑的运行时行为(runtime behavior)的警告
SyntaxWarning可疑的语法的警告
UserWarning用户代码生成的警告

什么是异常?

异常即是一个事件,该事件会在程序执行过程中发生,影响了程序的正常执行。

一般情况下,在Python无法正常处理程序时就会发生一个异常。

异常是Python对象,表示一个错误。

当Python脚本发生异常时我们需要捕获处理它,否则程序会终止执行。

异常处理

捕捉异常可以使用try/except语句。

try/except语句用来检测try语句块中的错误,从而让except语句捕获异常信息并处理。

如果你不想在异常发生时结束你的程序,只需在try里捕获它。

语法:

以下为简单的try…except…else的语法:

try:
<语句>        #运行别的代码
except <名字>:
<语句>        #如果在try部份引发了'name'异常
except <名字>,<数据>:
<语句>        #如果引发了'name'异常,获得附加的数据
else:
<语句>        #如果没有异常发生

try的工作原理是,当开始一个try语句后,python就在当前程序的上下文中作标记,这样当异常出现时就可以回到这里,try子句先执行,接下来会发生什么依赖于执行时是否出现异常。

  • 如果当try后的语句执行时发生异常,python就跳回到try并执行第一个匹配该异常的except子句,异常处理完毕,控制流就通过整个try语句(除非在处理异常时又引发新的异常)。

  • 如果在try后的语句里发生了异常,却没有匹配的except子句,异常将被递交到上层的try,或者到程序的最上层(这样将结束程序,并打印默认的出错信息)。

  • 如果在try子句执行时没有发生异常,python将执行else语句后的语句(如果有else的话),然后控制流通过整个try语句。

实例

下面是简单的例子,它打开一个文件,在该文件中的内容写入内容,且并未发生异常:

#!/usr/bin/python
# -*- coding: UTF-8 -*-

try:
    fh = open("testfile", "w")
    fh.write("这是一个测试文件,用于测试异常!!")
except IOError:
    print "Error: 没有找到文件或读取文件失败"
else:
    print "内容写入文件成功"
    fh.close()

以上程序输出结果:

$ python test.py 
内容写入文件成功
$ cat testfile       # 查看写入的内容
这是一个测试文件,用于测试异常!!

实例

下面是简单的例子,它打开一个文件,在该文件中的内容写入内容,但文件没有写入权限,发生了异常:

#!/usr/bin/python
# -*- coding: UTF-8 -*-

try:
    fh = open("testfile", "w")
    fh.write("这是一个测试文件,用于测试异常!!")
except IOError:
    print "Error: 没有找到文件或读取文件失败"
else:
    print "内容写入文件成功"
    fh.close()

在执行代码前为了测试方便,我们可以先去掉 testfile 文件的写权限,命令如下:

chmod -w testfile

再执行以上代码:

$ python test.py 
Error: 没有找到文件或读取文件失败

使用except而不带任何异常类型

你可以不带任何异常类型使用except,如下实例:try: 正常的操作 … except: 发生异常,执行这块代码 … else: 如果没有异常执行这块代码以上方式try-except语句捕获所有发生的异常。但这不是一个很好的方式,我们不能通过该程序识别出具体的异常信息。因为它捕获所有的异常。

使用except而带多种异常类型

你也可以使用相同的except语句来处理多个异常信息,如下所示

try:
    正常的操作
   ......................
except(Exception1[, Exception2[,...ExceptionN]]]):
   发生以上多个异常中的一个,执行这块代码
   ......................
else:
    如果没有异常执行这块代码

try-finally 语句

try-finally 语句无论是否发生异常都将执行最后的代码。

try:
<语句>
finally:
<语句>    #退出try时总会执行
raise

实例

#!/usr/bin/python
# -*- coding: UTF-8 -*-

try:
    fh = open("testfile", "w")
    fh.write("这是一个测试文件,用于测试异常!!")
finally:
    print "Error: 没有找到文件或读取文件失败"

如果打开的文件没有可写权限,输出如下所示:

$ python test.py 
Error: 没有找到文件或读取文件失败

同样的例子也可以写成如下方式:

#!/usr/bin/python
# -*- coding: UTF-8 -*-

try:
    fh = open("testfile", "w")
    try:
        fh.write("这是一个测试文件,用于测试异常!!")
    finally:
        print "关闭文件"
        fh.close()
except IOError:
    print "Error: 没有找到文件或读取文件失败"

当在try块中抛出一个异常,立即执行finally块代码。

finally块中的所有语句执行后,异常被再次触发,并执行except块代码。

参数的内容不同于异常。

异常的参数

一个异常可以带上参数,可作为输出的异常信息参数。

你可以通过except语句来捕获异常的参数,如下所示:

try:
    正常的操作
   ......................
except ExceptionType, Argument:
    你可以在这输出 Argument 的值...

变量接收的异常值通常包含在异常的语句中。在元组的表单中变量可以接收一个或者多个值。

元组通常包含错误字符串,错误数字,错误位置。

实例

以下为单个异常的实例:

#!/usr/bin/python
# -*- coding: UTF-8 -*-

# 定义函数
def temp_convert(var):
    try:
        return int(var)
    except ValueError, Argument:
        print "参数没有包含数字\n", Argument

# 调用函数
temp_convert("xyz");

以上程序执行结果如下:

$ python test.py 
参数没有包含数字
invalid literal for int() with base 10: 'xyz'

触发异常

我们可以使用raise语句自己触发异常

raise语法格式如下:

raise [Exception [, args [, traceback]]]

语句中 Exception 是异常的类型(例如,NameError)参数标准异常中任一种,args 是自己提供的异常参数。

最后一个参数是可选的(在实践中很少使用),如果存在,是跟踪异常对象。

实例

一个异常可以是一个字符串,类或对象。 Python的内核提供的异常,大多数都是实例化的类,这是一个类的实例的参数。

定义一个异常非常简单,如下所示:

def functionName( level ):
    if level < 1:
        raise Exception("Invalid level!", level)
        # 触发异常后,后面的代码就不会再执行

注意:为了能够捕获异常,"except"语句必须有用相同的异常来抛出类对象或者字符串。

例如我们捕获以上异常,"except"语句如下所示:

try:
    正常逻辑
except Exception,err:
    触发自定义异常    
else:
    其余代码

实例

#!/usr/bin/python
# -*- coding: UTF-8 -*-

# 定义函数
def mye( level ):
    if level < 1:
        raise Exception,"Invalid level!"
        # 触发异常后,后面的代码就不会再执行
try:
    mye(0)            # 触发异常
except Exception,err:
    print 1,err
else:
    print 2

执行以上代码,输出结果为:

$ python test.py 
1 Invalid level!

用户自定义异常

通过创建一个新的异常类,程序可以命名它们自己的异常。异常应该是典型的继承自Exception类,通过直接或间接的方式。

以下为与RuntimeError相关的实例,实例中创建了一个类,基类为RuntimeError,用于在异常触发时输出更多的信息。

在try语句块中,用户自定义的异常后执行except块语句,变量 e 是用于创建Networkerror类的实例。

class Networkerror(RuntimeError):
    def __init__(self, arg):
        self.args = arg

在你定义以上类后,你可以触发该异常,如下所示:

try:
    raise Networkerror("Bad hostname")
except Networkerror,e:
    print e.args

最后,想要更多的异常处理方法,还是有办法的哦~只要关注一下小编,给小编私信【资料】就行了。

AI安全合规实战:基于Go构建企业级AI安全网关与自动化检测系统 在人工智能和大模型技术快速发展的背景下,AI应用的安全与合规问题日益凸显。从技术原理上看,AI系统面临的风险与传统软件不同,主要源于训练数据偏见、模型幻觉、提示词注入以及输出内容合规性等内生性挑战。这些风险直接关系到数据隐私、内容安全和行业规范,其技术价值在于构建可信、可靠的AI系统,确保其在企业环境中安全落地。应用场景广泛覆盖金融、医疗、客服、内容生成等需要处理敏感信息或进行关键决策的领域。本文聚焦于AI安全工程实践,通过构建一个企业级的AI安全网关,详细演示了如何防御提示词注入攻击和实现内容安全过滤,并 阅读详情

相关推荐

Python实战:从高熵网络文本中识别与分析网络模因的生命周期

网络模因作为互联网文化中快速传播的观念、行为或风格,其文本常呈现高熵特性——低语法规范、高信息密度与噪音并存,且强依赖于特定社群上下文。理解其传播原理,对于内容平台推荐、社区运营及舆情分析具有重要技术价值。传统NLP任务难以应对此类文本的词典外词泛滥与意图模糊等挑战。本文通过构建动态监控分析流水线,结合无监督信号发现与弱监督标注策略,使用Python生态工具如jieba进行中文分词与关键词提取,并借助networkx构建关联图谱,实现对网络模因的精准识别、情感分析与传播路径追踪。该方案可广泛应用于社交媒体热

weixin_30613727的博客 367

Python——异常处理

讲述了Python异常处理机制、内置异常类的结构、异常处理的语法结构、异常的检测与处理方法、自定义异常类的定义与使用方法、with语句与断言的使用方法。

m0_65639340的博客 1万+

Python的异常处理

程序错误分为两种:语法错误 和 异常错误。 语法错误:代码没有按照python规定语法去写,发明创造产生的错误 #语法错误抑制不了。 异常错误:在代码语法正确的前提下,程序报错就是异常 #异常错误可以抑制

景天科技苑 3347

Python程序异常处理

异常就是程序运行时发生错误的信号,在程序由于某些原因出现错误的时候,若程序没有处理它,则会抛出异常,程序也的运行也会随之终止;1.程序终止,无法运行下去;2…如果程序是面向客户,那么会使客户的体验感很差,进而影响业务;当处理不确定因素时,比如有用户参与,有外界数据传入时,都容易出现异常;1.由于语法错误导致程序出现异常,这种错误,根本过不了Python解释器的语法检查,必须在程序执行前就改正;

Python编程学习的博客 6459

Ubuntu20.04下 嵌入式 Qt 开发环境的搭建(适用于Tiny6410)

Ubuntu 下 Tiny6410 嵌入式 Qt 开发环境的搭建 目录导航Ubuntu 下 Tiny6410 嵌入式 Qt 开发环境的搭建前言1.安装前的准备工作2.安装交叉编译器 前言 这篇文章,主要是基于 Ubuntu19.10版本而写,写此文的初衷,是为了自己使用,因为最近正在以Tiny6410板子做实训,所以也是初学者一枚,只能保证我遇上的问题统统能够解决掉,至于一些没遇上的,欢迎各位看客给我留言,大家一起讨论,一起解决。 注:本文会持续更新 1.安装前的准备工作 环境要求 Linux系统:U

繁臻的小窝 4895

【ISAR成像】基于Matlab的飞机点目标模型仿真与图像优化

本文详细介绍了如何使用Matlab进行ISAR成像仿真,重点讲解了从构建飞机点目标模型到生成清晰图像的完整流程。通过模拟雷达回波、距离压缩、运动补偿及方位压缩等核心信号处理步骤,并结合相位梯度自聚焦等优化技巧,有效提升了ISAR图像的清晰度与分辨率。文章还分享了雷达参数调优、加窗处理等实战经验,为雷达信号处理与目标识别研究提供了实用指导。

weixin_29071809的博客 389

【python】异常处理

Python中,程序执行过程中发生的错误或异常情况。当出现异常时,程序会停止执行并抛出一个异常对象,如果没有适当的处理机制,程序将会终止运行。为了避免直接停止程序,提高程序的容错性和可靠性,我们通常会使用try语句来处理异常。

啊?这个人,居然也写代码啊…… 5015

RK3588嵌入式AI工业部署:YOLOv11 + OpenCV实时推理系统全栈实现

接下来,你可以尝试优化模型(如量化、剪枝)、扩展功能(如多摄像头推理、结果上传到云端),让你的AI应用更加完善。不需要担心技术门槛,我们会一步步带你完成环境搭建、模型转换、部署推理的全流程,最终让你在RK3588上体验AI目标检测的丝滑快感。首先,我们需要把YOLOv11的PyTorch模型(.pt格式)转换成ONNX格式,这是模型部署的第一步。此时,你应该能看到摄像头画面中出现了实时的目标检测框,标注着检测到的物体类别和置信度。文件,这就是RK3588可运行的模型文件。文件,这就是转换后的ONNX模型。

LXY_LOVE36的博客 247

大数据毕业设计:python美食数据采集推荐可视化系统 Django框架 scrapy爬虫框架 Echarts可视化 下厨房网站 deepseek 建议收藏✅

大数据毕业设计:python美食数据采集推荐可视化系统 Django框架 scrapy爬虫框架 Echarts可视化 下厨房网站 deepseek 建议收藏✅

公众号:源码之屋,十多年程序猿资深互联网人,目前专注于Python/Java/大数据项目解决方案制定,提供各行业各编程语言的全套开发服务,喜爱code,喜爱分享,生命不止,编码不息! 1807

基于STM32、HAL库的ICP-20100气压传感器 驱动程序设计

它具有低功耗、高精度、快速响应等特点,非常适合物联网、可穿戴设备和无人机等应用。#define ICP20100_FIFO_CTRL 0x09 // FIFO控制寄存器。#define ICP20100_FIFO_DATA 0x0A // FIFO数据寄存器。#define ICP20100_FIFO_STS 0x0B // FIFO状态寄存器。#define ICP20100_FIFO_WTM 0x15 // FIFO水印设置。

corlin6688的博客 601

弱网、高热、只有 32MB 内存:恶劣环境下嵌入式 SoC 音视频开发的“不死”法则

永远不要假设。你申请一个 1920 宽的图像,硬件为了对齐(比如 16 字节对齐或 256 字节对齐),实际分配的一行可能有 1936 甚至是 2048 字节。那个多出来的部分叫Padding。如果你写代码时用来计算数据量,或者用Width来做指针偏移:恭喜你,你的画面会像被风吹歪的百叶窗一样,产生斜切畸变。永远使用VB_CONF结构体里返回的u32Stride字段。这是区分新手和老手的试金石。第六章 ISP 调优(Tuning)实战:为什么你调出的画面像个“鬼片”?

大模型大数据攻城狮的专栏 1771

python美食数据采集推荐可视化系统 Django框架 scrapy爬虫框架 Echarts可视化 下厨房网站 deepseek 建议收藏 大数据毕业设计✅

python美食数据采集推荐可视化系统 Django框架 scrapy爬虫框架 Echarts可视化 下厨房网站 deepseek 建议收藏 大数据毕业设计✅

q_3548885153的博客 1780

用Python爬取政府采购信息的实战全流程

以 Playwright 自动采集政府采购信息结构化存储与查询可拓展关键词过滤与通知机制。

2201_76125261的博客 1150

python美食数据采集推荐可视化系统 Django框架 scrapy爬虫框架 Echarts可视化 下厨房网站 deepseek 建议收藏✅

大数据毕业设计:python美食数据采集推荐可视化系统 Django框架 scrapy爬虫框架 Echarts可视化 下厨房网站 deepseek 建议收藏✅

vx_biyesheji0001的博客 1713

基于YOLOv8的野生菌菇检测、识别与分类系统

YOLOv8是YOLO系列模型的最新版本,继承了YOLO系列高效、精确的特点。YOLOv8采用了新的网络架构,并优化了推理速度和检测精度。与传统的目标检测算法(如Faster R-CNN)不同,YOLO模型通过一次前向传播同时完成目标定位与分类,因而具有非常高的计算效率。

YOLO 1284

基于Simulink的转向控制系统仿真建模示例

本文完成了基于 Simulink 的 EPS 转向控制系统仿真,实现了:✅掌握 EPS 助力控制基本原理✅构建车速敏感的可变助力策略✅在 Simulink 中验证低速轻便、高速沉稳的手感✅达成“安全、舒适、高效”的现代转向系统。

xiaoheshang_123的博客 88

python美食数据采集推荐可视化系统 Django框架 scrapy爬虫框架 Echarts可视化 下厨房网站 deepseek 建议收藏 大数据毕业设计(源码)✅

python美食数据采集推荐可视化系统 Django框架 scrapy爬虫框架 Echarts可视化 下厨房网站 deepseek 建议收藏 大数据毕业设计(源码)✅

vx_biyesheji0001的博客 1689

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

毕业设计:python美食数据采集推荐可视化系统 Django框架 scrapy爬虫框架 Echarts可视化 下厨房网站 大数据✅

毕业设计:python美食数据采集推荐可视化系统 Django框架 scrapy爬虫框架 Echarts可视化 下厨房网站 大数据✅

公众号:源码之屋,十多年程序猿资深互联网人,目前专注于Python/Java/大数据项目解决方案制定,提供各行业各编程语言的全套开发服务,喜爱code,喜爱分享,生命不止,编码不息! 2013

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

大数据美食数据采集推荐可视化系统 Django框架 scrapy爬虫框架 Echarts可视化 下厨房网站 deepseek 建议收藏✅

大数据美食数据采集推荐可视化系统 Django框架 scrapy爬虫框架 Echarts可视化 下厨房网站 deepseek 建议收藏✅

vx_biyesheji0002的博客 1343

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

从事数据分析方面的工作,新手该学SQL还是Python?

如果你想从事数据分析方面的工作,那么学习SQL和Python都是必要的。SQL用于查询和处理数据,而Python则用于数据的处理、分析和可视化。

Python966的博客 1016

整理出来的200份Python零基础入门与数据分析资料,速领!

今天给大家推荐一个优质的【关于数据分析与可视化】,作者:俊欣????点击关注微信公众号首先,简单的介绍一下作者,毕业于美国的一所排名USNEWS第60...

小白学视觉 354

feapder爬虫框架错误处理实战指南:从问题诊断到智能修复

在数据采集工作中,我们经常会遇到各种突发状况:网络连接中断、服务器返回错误、数据格式异常……这些问题如果处理不当,可能导致整个爬虫任务失败或数据丢失。feapder作为一款功能强大的Python爬虫框架,内置了完善的错误处理机制,能够帮助开发者轻松应对各种异常情况。本文将从实际问题出发,介绍feapder的错误处理方案,并通过实践案例展示如何构建稳定可靠的爬虫系统。 ## 一、爬虫开发中的常见"

gitblog_00015的博客 133

把 Claude Code 变成你的架构顾问:如何用“隐式重构模式”自动消除代码坏味道

不直接问“这段代码有什么 bug”,而是让 Claude Code 通过“观察执行路径 → 反推隐含假设 → 生成边界测试 → 自动提取重构模式”四个阶段,自主发现深层问题并提出结构优化。

悟空码字的博客 299

LangGraph工具调用不会总是成功:构建 Agent 的健壮错误处理体系

本文围绕 LangGraph Agent 生产环境中的工具调用故障,系统介绍超时控制、重试策略、降级响应与防无限循环四道防线。文章通过不稳定 API、慢速工具、异常数据工具 Demo,展示如何用指数退避处理瞬时失败,用超时避免会话卡死,用空值校验识别“假成功”,并在重试失败后返回兜底。同时强调 max_iterations、recursion_limit、错误分类、日志监控和熔断机制,帮助 Agent 从能跑的 Demo 走向稳定、可观测、上线的工程系统。

曾经“等你生日那天”都遥远得像未来,如今却可欢愉的挥手说“下个十年见” 2万+
上一篇: python多版本与虚拟环境
下一篇: 手机最强Python编程神器,在手机上运行Python
克金森沐沐
博客等级 码龄6年 694粉丝 64原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值