首页/新闻资讯/正文详情

【Python 异常机制详解:掌握 try except 捕获异常】

发布时间:2026/9/24 19:14:00 来源:云帆数科 栏目:资讯中心
【Python 异常机制详解:掌握 try except 捕获异常】
Python中用try except语句块捕获并处理异常其基本语法结构如下所示try: 可能产生异常的代码块 except [ (Error1, Error2, ... ) [as e] ]: 处理异常的代码块1 except [ (Error3, Error4, ... ) [as e] ]: 处理异常的代码块2 except [Exception]: 处理其它异常该格式中[ ] 括起来的部分可以使用也可以省略。其中各部分的含义如下(Error1, Error2,...) 、(Error3, Error4,...)其中Error1、Error2、Error3 和 Error4 都是具体的异常类型。显然一个 except 块可以同时处理多种异常。[as e]作为可选参数表示给异常类型起一个别名 e这样做的好处是方便在 except 块中调用异常类型后续会用到。[Exception]作为可选参数可以代指程序可能发生的所有异常情况其通常用在最后一个 except 块。从try except的基本语法格式可以看出try 块有且仅有一个但 except 代码块可以有多个且每个 except 块都可以同时处理多种异常。当程序发生不同的意外情况时会对应特定的异常类型Python 解释器会根据该异常类型选择对应的 except 块来处理该异常。try except 语句的执行流程如下首先执行 try 中的代码块如果执行过程中出现异常系统会自动生成一个异常类型并将该异常提交给 Python 解释器此过程称为捕获异常。当 Python 解释器收到异常对象时会寻找能处理该异常对象的 except 块如果找到合适的 except 块则把该异常对象交给该 except 块处理这个过程被称为处理异常。如果 Python 解释器找不到处理异常的 except 块则程序运行终止Python 解释器也将退出。事实上不管程序代码块是否处于 try 块中甚至包括 except 块中的代码只要执行该代码块时出现了异常系统都会自动生成对应类型的异常。但是如果此段程序没有用 try 包裹又或者没有为该异常配置处理它的 except 块则 Python 解释器将无法处理程序就会停止运行反之如果程序发生的异常经 try 捕获并由 except 处理完成则程序可以继续执行。举个例子try: a int(input(输入被除数)) b int(input(输入除数)) c a / b print(您输入的两个数相除的结果是, c ) except (ValueError, ArithmeticError): print(程序发生了数字格式异常、算术异常之一) except : print(未知异常) print(程序继续运行)程序运行结果为输入被除数a 程序发生了数字格式异常、算术异常之一 程序继续运行上面程序中第 6 行代码使用了ValueError, ArithmeticError来指定所捕获的异常类型这就表明该 except 块可以同时捕获这 2 种类型的异常第 8 行代码只有 except 关键字并未指定具体要捕获的异常类型这种省略异常类的 except 语句也是合法的它表示可捕获所有类型的异常一般会作为异常捕获的最后一个 except 块。除此之外由于 try 块中引发了异常并被 except 块成功捕获因此程序才可以继续执行才有了“程序继续运行”的输出结果。获取特定异常的有关信息通过前面的学习我们已经可以捕获程序中可能发生的异常并对其进行处理。但是由于一个 except 可以同时处理多个异常那么我们如何知道当前处理的到底是哪种异常呢其实每种异常类型都提供了如下几个属性和方法通过调用它们就可以获取当前处理异常类型的相关信息args返回异常的错误编号和描述字符串str(e)返回异常信息但不包括异常信息的类型repr(e)返回较全的异常信息包括异常信息的类型。举个例子try: 1/0 except Exception as e: # 访问异常的错误编号和详细信息 print(e.args) print(str(e)) print(repr(e))输出结果为(division by zero,) division by zero ZeroDivisionError(division by zero,)除此之外如果想要更加详细的异常信息可以使用 traceback 模块。有兴趣的读者可自行查阅资料学习。从程序中可以看到由于 except 可能接收多种异常因此为了操作方便可以直接给每一个进入到此 except 块的异常起一个统一的别名 e。在 Python 2.x 的早期版本中除了使用 as e 这个格式还可以将其中的 as 用逗号代替。

相关推荐

Java实现中国象棋:从棋盘建模到Alpha-Beta剪枝的完整解析
Java实现中国象棋:从棋盘建模到Alpha-Beta剪枝的完整解析

简介:一套基于 Java 实现的《中国象棋》完整游戏源码,面向有一定 Java 基础、想深入游戏逻辑与算法设计的开发者。项目实现了棋盘与棋子的图形界面、不同棋子的走法限制、走子音效,并采用极大极小值搜索算法构建 AI;支持人机、人人… · 2026/9/24 19:13:53

净化板材选型与施工全解析:从洁净等级到气密性验收
净化板材选型与施工全解析:从洁净等级到气密性验收

1. 净化板材的基本认知与分类做净化工程这些年,我见过太多人把净化板当成普通彩钢板用,结果后面返工、整改、验收不过关,一堆麻烦事。实际上净化板材和普通建材板完全是两个思路的产物,它本质上是一种“服务于空气洁净度控制”的结… · 2026/9/24 19:13:53

服务器硬件测试选型指南:从资源画像到套餐化实践
服务器硬件测试选型指南:从资源画像到套餐化实践

1. 从一台"看起来没问题"的服务器说起机房巡检的时候,最怕遇到那种"什么告警都没有,但业务就是慢"的机器。CPU使用率不高,内存也够,磁盘IO看着也正常,可一到业务高峰期,响应时间就往上… · 2026/9/24 19:13:53

AI编程工具实战选型:适配工作流而非追逐热点
AI编程工具实战选型:适配工作流而非追逐热点

1. 这不是工具清单,而是一份开发者效率跃迁实操手记“2026开发者必备6款AI工具”——看到这个标题,我第一反应不是点开,而是合上手机,泡了杯浓茶。过去三年,我带过17个技术团队,从嵌入式固件到金融级Java后… · 2026/9/24 19:53:43

YOLOv5-6.0吸烟检测实战:从训练到部署的避坑指南
YOLOv5-6.0吸烟检测实战:从训练到部署的避坑指南

简介:这份资源面向计算机视觉方向的学习者与开发者,提供基于YOLOv5-6.0训练完成的吸烟行为检测模型,可用于公共场所、工地、加油站等场景下的吸烟行为识别与预警。包内包含YOLOv5m与YOLOv5s两个已训练权重,目标类别为smoke&#x… · 2026/9/24 19:53:43

Python连接PostgreSQL全攻略:驱动选型、连接池与避坑指南
Python连接PostgreSQL全攻略:驱动选型、连接池与避坑指南

但凡用Python写过业务系统,数据库连接这关基本绕不过去。我这次聊的就是Python连PostgreSQL这件事,从环境准备、驱动选型,到连接池、批量写入,再到实际排查过的坑,一次性把“python PostgreSQL 数据库连接”这条链路说… · 2026/9/24 19:53:43

Olla:自托管AI模型的智能代理与负载均衡器实战
Olla:自托管AI模型的智能代理与负载均衡器实战

前阵子帮朋友把他办公室里的三台 GPU 机器统一接入一个 AI 网关,他最初的需求特别简单:不要让产品经理每次换个模型地址就来找我改代码。结果我陪他改了三轮配置才意识到,这事情看起来是“搭个代理转发一下”,实际上牵扯到模型路由… · 2026/9/24 19:53:43

2026年Jira替代方案深度对比:Gitee、PingCode、Tapd、云效选型与迁移指南
2026年Jira替代方案深度对比:Gitee、PingCode、Tapd、云效选型与迁移指南

1. 为什么2026年还在聊“Jira替代”这件事如果你在研发团队里待过三年以上,大概率经历过这样的场景:项目排期靠一张Excel,需求变更靠群里吼,代码提交和任务状态永远对不上号。后来团队上了Jira,流程是规范了&#xff0… · 2026/9/24 19:53:43

Seq2seq+LSTM+Attention:聊天机器人情绪检测系统实战
Seq2seq+LSTM+Attention:聊天机器人情绪检测系统实战

简介:这是一份用于毕业设计或NLP入门实战的聊天机器人情绪检测项目资源,面向计算机相关专业学生及自然语言处理爱好者,解决在Seq2seq框架下融合LSTM与Attention机制实现智能对话,并同步完成用户情绪状态初步检测的需求。技术栈包括… · 2026/9/24 19:53:37

基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程
基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程

简介:这是一套面向计算机、人工智能、自动化等专业学生与教师的毕业设计级项目资源,围绕YOLOv8实现渔船作业监控系统,可用于毕设、课程设计、大作业或项目立项演示。压缩包共97个文件,约24.21MB,以70个Python源码文件为… · 2026/9/24 0:00:13

1D-CNN时间序列建模实战:从Conv1d原理到工业落地
1D-CNN时间序列建模实战:从Conv1d原理到工业落地

简介:面向时间序列数据建模的一维卷积神经网络完整实现,适合深度学习入门者及需要快速验证时序模型的研究者,能够从音频、文本、传感器或股价等序列中挖掘局部特征与时间依赖。压缩包体积很小,只有3KB,内含3个Python脚… · 2026/9/24 0:00:26

柔软的L:汉语语流中被忽视的舌肌张力控制
柔软的L:汉语语流中被忽视的舌肌张力控制

1. 这个“L”不是字母表里的L,而是舌尖上的L最近在几个方言群和语音教学社群里,反复看到有人发一句:“也说字母L:柔软的长舌”。初看以为是英语发音课笔记,点开才发现全是方言爱好者、播音系学生、语言康复师甚至戏曲演… · 2026/9/24 0:00:44

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码