其他
Python教学 | 有备无患!详解 Python 异常处理(try-except)
Python教学专栏,旨在为初学者提供系统、全面的Python编程学习体验。通过逐步讲解Python基础语言和编程逻辑,结合实操案例,让小白也能轻松搞懂Python!
>>>点击此处查看往期Python教学内容
本文目录
引言
一、关于异常
二、try-except 用法
三、哪些情况下需要使用 try-except ?
1. 使用易报错函数时
2. 使用网络请求数据时 3. 分批处理大数据集时 4. …… 四、异常处理注意事项
总结
相关推荐
本文共5707个字,阅读大约需要15分钟,欢迎指正!
引言
try-except
。它能够帮助我们略过程序的异常部分或者针对不同类型的异常采取不同的应对措施,保障程序不被未知异常中断。一、关于异常
KeyError(键错误):当试图访问字典中不存在的键时引发的异常。 ValueError(值错误):当传递给函数的参数类型正确但值不合法时引发的异常。 TypeError(类型错误):当使用不兼容的类型进行操作或函数调用时引发的异常。 FileNotFoundError(文件未找到错误):当试图打开不存在的文件时引发的异常。 IndexError(索引错误):当使用无效的索引访问序列(如列表、元组或字符串)时引发的异常。 OverflowError(溢出错误):当数值运算结果超出了所能表示的范围时引发的异常。 AttributeError(属性错误):当试图访问对象不存在的属性时引发的异常。 UnicodeError(Unicode 错误):当处理字符串时遇到 Unicode 编码相关的错误时引发的异常。 IOError(输入输出错误):当发生与输入输出相关的错误时引发的异常,如读取或写入文件失败。
try-except
是一个组合语句,书写格式类似于if-else
语句,但又有很大的不同。if
关键字可以单独出现,代表单分支结构,但try
与except
必须一起使用,缺一不可。try-except
的基本结构如下:try:
<代码块1>
except:
<代码块2>
<代码块1>
中一般是一些容易“报错”的代码,如果<代码块1>
中的代码能够正常运行,那么程序就会逃过<代码块2>
去执行后续的其他代码;而<代码块2>
中的代码一般是<代码块1>
报错时的应对措施。总的来说,如果<代码块1>
能正常运行,那么皆大欢喜;但如果<代码块1>
中的代码出现异常,那么程序就会执行<代码块2>
中的代码,而不是直接报错和终止程序。(如果<代码块2>
中的代码是 pass,则代表忽略这个异常。)try-except
语句的基本结构,也是最常用的结构,简单粗暴易懂。但当程序变得复杂时,可能就需要更加精准地针对不同类型的异常实施不同的解决方案,这种更复杂的异常处理结构如下:try:
<代码块1>
except 异常类型1:
<代码块2>
except 异常类型2:
<代码块3>
except 异常类型3:
<代码块4>
……
except Exception:
<代码块N>
<代码块1>
中出现异常类型1
时,程序就会执行<代码块2>
,当<代码块1>
中出现异常类型2
时,程序就会执行<代码块3>
……如果抛出的异常类型不属于任何一种已写明的异常,那么都会被归入异常类基类 Exception 中,进而执行<代码块N>
。try-except
还有一些其他结果,包括try-except-else
、try-except-else-finally
。这些结果能够实现更多异常处理功能,让代码结构更加清晰,但笔者认为上述两种结果已经足够帮助我们解决 99% 的实际问题了,所以本文就不再对这两种结构多做介绍。三、哪些情况下需要使用 try-except ?
1. 使用易报错函数时
def try_eval(Str):
try:
# 尝试直接返回转换后的值
return eval(Str)
except:
# 若无法正常转换,输出提示文字并返回特殊标记
print(f'输入值【{Str}】无法被正常转换')
return '--'
*图为广告,与正文内容无关
2. 使用网络请求数据时
try-except
来规避程序报错。def revfunc(df):
lng = df['LNG1']
lat = df['LAT1']
if lng != '':
# 若 经纬度 不为空
GD_inv = GD.regeocode_by_lonlat(lng, lat)
try:
# 若返回状态正常
if GD_inv['status'] == '1'
try:
# 根据经纬度返回省份、地市、区县、行政区划代码
return GD_inv['regeocode']['addressComponent']['province'],\
GD_inv['regeocode']['addressComponent']['city'],\
GD_inv['regeocode']['addressComponent']['district'],\
GD_inv['regeocode']['addressComponent']['adcode']
except:
return '','','',''
else:
return '','','',''
except:
return '','','',''
else:
# 若 经纬度 为空
return '','','',''
3. 分批处理大数据集时
使用 Python 大数据集时,由于计算机(运行)内存空间不足以装载整个数据集,往往需要分批处理,将数据集分成 N 个数据块,每次处理一块数据。如果数据集非常大,同时处理步骤也比较复杂,那么整个程序可能要持续运行数个小时,这就对程序的稳定性有着非常高的要求。如果某个数据块中出现异常数据导致程序中断,我们可能不会立即察觉,后续要重新启动程序,费时费力。在这种情况下,也建议大家使用异常处理结构,防止异常造成程序中断。当然,在此情况下我们还需要做好异常应对策略,不能完全忽略异常的发生,因为这很可能让我们丢失数据。
4. ……
try-except
,欢迎在留言区留言分享。四、异常处理注意事项
try-except
语句时,不能在所有情况下都使用忽略异常这个思路。尤其是在分批处理大数据集时,如果一个数据块在被处理时发生异常,尽管其有着异常处理的代码,但最终这个数据块可能还是没有被成功处理。所以我们一定要在except
语句下编写合适的应对代码,例如遇到无法处理的数据块时,先将其单独保存下来,待大部分数据处理完成后,再对这些问题数据进行单独操作。总结
💡Python的异常处理语句
try-except
提供了一种有效的方式来处理代码中可能出现的异常情况。通过正确地使用try-except
,我们可以提高代码的健壮性和可靠性,避免程序崩溃,并且更好地掌控程序流程。同时,我们也应该注意异常处理的细节和注意事项,以保证我们的代码在出现异常时能够正确地响应和处理。扫码联系客服
加入数据seminar-Python交流学习群
相关推荐
Python 教学
Python 教学 | 学习 Python 第一步——环境安装与配置 Python 教学 | Python 基本数据类型 Python 教学 | Python 字符串操作(上) Python 教学 | Python 字符串操作(下) Python 教学 | Python 变量与基本运算 Python 教学 | 组合数据类型-列表 Python 教学 | 组合数据类型-集合(内含实例) Python 教学 | 组合数据类型 - 字典&元组 Python 教学 | Python 中的分支结构(判断语句) Python 教学 | Python 中的循环结构(上) Python 教学 | Python 中的循环结构(下) Python 教学 | Python 函数的定义与调用 Python 教学 | Python 内置函数 Python 教学 | 最常用的标准库之一 —— os Python 教学 | 盘点 Python 数据处理常用标准库 Python 教学 | “小白”友好型正则表达式教学(一) Python 教学 | “小白”友好型正则表达式教学(二) Python 教学 | “小白”友好型正则表达式教学(三) Python 教学 | 数据处理必备工具之 Pandas(基础篇) Python 教学 | 数据处理必备工具之 Pandas(数据的读取与导出) Python 教学 | Pandas 数据索引与数据选取 Python 教学 | Pandas 妙不可言的条件数据筛选 Python 教学 | Pandas 缺失值与重复值的处理方法 Python 教学 | Pandas 表格数据行列变换 Python 教学 | Pandas 表格字段类型精讲(含类型转换) Python 教学 | Pandas 数据合并(含目录文件合并案例) Python 教学 | Pandas 数据匹配(含实操案例) Python 教学 | Pandas 函数应用(apply/map)【上】 Python 教学 | Pandas 函数应用(apply/map)【下】 Python 教学 | Pandas 分组聚合与数据排序 Python 教学 | Pandas 时间数据处理方法 Python 教学 | 列表推导式 & 字典推导式 Python 教学 | 一文搞懂面向对象中的“类和实例” Python 教学 | Python 学习路线+经验分享,新手必看! Python 教学 | 解密 Windows 中的 Path 环境变量
Python实战
Python实战 | 如何使用 Python 调用 API Python 实战 | 使用正则表达式从文本中提取指标 大数据分析 | 用 Python 做文本词频分析 数据治理 | 从“今天中午吃什么”中学习Python文本相似度计算 数据治理 | 省下一个亿!一文读懂如何用python读取并处理PDF中的表格(赠送本文所用的PDF文件) 数据治理 | 还在人工识别表格呢?Python 调用百度 OCR API 又快又准 数据治理 | 如何用 Python 批量压缩/解压缩文件 案例分享:使用 Python 批量处理统计年鉴数据(上) 案例分享:使用 Python 批量处理统计年鉴数据(下) Python 实战 | ChatGPT + Python 实现全自动数据处理/可视化 ChatGPT在指尖跳舞: open-interpreter实现本地数据采集、处理一条龙 Python实战 | 文本文件编码问题的 Python 解决方案
Python 实战 | 从 PDF 中提取(框线不全的)表格
数据可视化
星标⭐我们不迷路!想要文章及时到,文末“在看”少不了!
点击搜索你感兴趣的内容吧
往期推荐
数据可视化 | Python数据可视化,无法绕过的matplotlib基础知识!
《管理世界》|| 张征宇 等:双重差分设计下固定效应估计量何时可信?——若干有用的建议
机器学习 | 吴恩达:机器学习的六个核心算法
加入我们 | 中国公共政策与绿色发展数据库 (CPPGD) 研究助理 (实习) 招聘公告
数据Seminar
这里是大数据、分析技术与学术研究的三叉路口
欢迎扫描👇二维码添加关注