Python基础编程——捕获对象(python用于捕获特定类型异常)
off999 2024-11-17 00:30 13 浏览 0 评论
在except子句中访问异常对象本身,可以使用两个参数而不是一个参数。需要注意的是像前面那样我们在一个except子句中捕获多种异常时,我们也是同个一个元组为except子句提供参数。访问异常对象本身,在需要记录异常信息时很有用。
访问异常对象
正如我们前面介绍的那样,其本质就是访问异常对象。如下capture_object.py程序所示:
capture_object.py
#!/usr/bin/env python
# -*- coding: utf-8 -*-
try:
dividend = int(input('请输入被除数:'))
divisor = int(input('请输入除数:'))
result = dividend / divisor
print('result = {}'.format(result))
except (ZeroDivisionError, TypeError, ValueError) as error:
print(error)
程序执行如下所示:
请输入被除数:1
请输入除数:2a
invalid literal for int() with base 10: '2a'
在上面程序的except子句中,我们通过元组参数的形式提供给except子句,当发生异常时,会将实例化一个异常对象并将其另一个参数变量error,以便后面的except子句方法异常对象。
待else子句的异常捕获
有些情况下,在没有出现异常时执行一个代码块很有用,因此我们也可以像条件语句或者循环语句那样,给try/except语句加上一个esle子句。这在有些情况下非常有用,例如检验用户的输入是否正确,直到用户输入正确才继续执行后面的程序。具体如下try_except_esle.py程序所示:
try_except_else.py
#!/usr/bin/env python
# -*- coding: utf-8 -*-
while True:
try:
dividend = int(input('请输入被除数:'))
divisor = int(input('请输入除数:'))
result = dividend / divisor
print('result = {}'.format(result))
except (ValueError, ZeroDivisionError) as error:
print(error)
else:
break
程序执行结果如下所示:
请输入被除数:1
请输入除数:0
division by zero
请输入被除数:4
请输入除数:a
invalid literal for int() with base 10: 'a'
请输入被除数:1
请输入除数:1
result = 1.0
在前面我们介绍过跳出循环可以使用break关键字,在上面的程序中,当没有异常发生时,将会执行else子句中的语句,这里执行break,然后跳出循环。如果有异常发生,则会继续循环,直到输入的是正确的。这就好比,我们在登录邮箱时,如果我们输入的用户名和密码错误,那么就会一直提示我们输入有误,直到我们输入正确的用户名和密码时。
finally子句
try/except语句还有一个finally子句,用于在执行完时进行清理工作。finally子句很有用,尤其是在文件或者网络套接字操作时,当我们操作完成后,需要关闭文件或者网络套接字。具体如下try_finally.py程序所示:
try_finally.py
#!/usr/bin/evn python
# -*- coding: utf-8 -*-
result = None
try:
dividend = int(input('请输入被除数:'))
divisor = int(input('请输入除数:'))
result = dividend / divisor
print('result = {}'.format(result))
except (ValueError, ZeroDivisionError) as error:
print(error)
finally:
del result
print(result)
程序执行结果如下所示:
请输入被除数:1
请输入除数:1
result = 1.0
Traceback (most recent call last):
File "/Users/guanhu/Projects/python-study/src/exception/try_finally.py", line 33, in <module>
print(result)
NameError: name 'result' is not defined
在上面的程序中,我们执行完计算后在finally子句中将变量result删除,这虽然看起有点傻,最后在程序默认用函数print()打印变量result时报错了,这说明我们在finally中进行了一些工作,这里把变量result给删除了。在文件、套接字等操作中,我们通常都要对其进行清理,避免占用自用。需要注意的是,不管有没有异常发生,finally子句都将会被执行。
我们在对异常进行捕获时,可能并不想写多个异常类或者说总会有漏网的异常,那么我们只需要在使用一个except进行捕获并且不带任何参数即可。不推荐这样做,因为这样做的话,究竟发生了什么异常都不清楚。
总结
本节主要介绍了访问异常对象、esle子句以及finally子句,需要注意的是finally子句不管有没有异常发生都将会别执行。
下一节将会介绍异常之禅相关内容,敬请关注!
如果有需要文中小程序的可以私信我哟!
创作不容易,还请点个赞!喜欢的小伙伴请点关注、收藏!
欢迎大家转发、评论!
相关推荐
- python入门到脱坑经典案例—清空列表
-
在Python中,清空列表是一个基础但重要的操作。clear()方法是最直接的方式,但还有其他方法也可以实现相同效果。以下是详细说明:1.使用clear()方法(Python3.3+推荐)...
- python中元组,列表,字典,集合删除项目方式的归纳
-
九三,君子终日乾乾,夕惕若,厉无咎。在使用python过程中会经常遇到这四种集合数据类型,今天就对这四种集合数据类型中删除项目的操作做个总结性的归纳。列表(List)是一种有序和可更改的集合。允许重复...
- Linux 下海量文件删除方法效率对比,最慢的竟然是 rm
-
Linux下海量文件删除方法效率对比,本次参赛选手一共6位,分别是:rm、find、findwithdelete、rsync、Python、Perl.首先建立50万个文件$testfor...
- 数据结构与算法——链式存储(链表)的插入及删除,
-
持续分享嵌入式技术,操作系统,算法,c语言/python等,欢迎小友关注支持上篇文章我们讲述了链表的基本概念及一些查找遍历的方法,本篇我们主要将一下链表的插入删除操作,以及采用堆栈方式如何创建链表。链...
- Python自动化:openpyxl写入数据,插入删除行列等基础操作
-
importopenpyxlwb=openpyxl.load_workbook("example1.xlsx")sh=wb['Sheet1']写入数据#...
- 在Linux下软件的安装与卸载(linux里的程序的安装与卸载命令)
-
通过apt安装/协助软件apt是AdvancedPackagingTool,是Linux下的一款安装包管理工具可以在终端中方便的安装/卸载/更新软件包命令使用格式:安装软件:sudoapt...
- Python 批量卸载关联包 pip-autoremove
-
pip工具在安装扩展包的时候会自动安装依赖的关联包,但是卸载时只删除单个包,无法卸载关联的包。pip-autoremove就是为了解决卸载关联包的问题。安装方法通过下面的命令安装:pipinsta...
- 用Python在Word文档中插入和删除文本框
-
在当今自动化办公需求日益增长的背景下,通过编程手段动态管理Word文档中的文本框元素已成为提升工作效率的关键技术路径。文本框作为文档排版中灵活的内容容器,既能承载多模态信息(如文字、图像),又可实现独...
- Python 从列表中删除值的多种实用方法详解
-
#Python从列表中删除值的多种实用方法详解在Python编程中,列表(List)是一种常用的数据结构,具有动态可变的特性。当我们需要从列表中删除元素时,根据不同的场景(如按值删除、按索引删除、...
- Python 中的前缀删除操作全指南(python删除前导0)
-
1.字符串前缀删除1.1使用内置方法Python提供了几种内置方法来处理字符串前缀的删除:#1.使用removeprefix()方法(Python3.9+)text="...
- 每天学点Python知识:如何删除空白
-
在Python中,删除空白可以分为几种不同的情况,常见的是针对字符串或列表中空白字符的处理。一、删除字符串中的空白1.删除字符串两端的空白(空格、\t、\n等)使用.strip()方法:s...
- Linux系统自带Python2&yum的卸载及重装
-
写在前面事情的起因是我昨天在测试Linux安装Python3的shell脚本时,需要卸载Python3重新安装一遍。但是通过如下命令卸载python3时,少写了个3,不小心将系统自带的python2也...
- 如何使用Python将多个excel文件数据快速汇总?
-
在数据分析和处理的过程中,Excel文件是我们经常会遇到的数据格式之一。本文将通过一个具体的示例,展示如何使用Python和Pandas库来读取、合并和处理多个Excel文件的数据,并最终生成一个包含...
- 【第三弹】用Python实现Excel的vlookup功能
-
今天继续用pandas实现Excel的vlookup功能,假设我们的2个表长成这样:我们希望把Sheet2的部门匹在Sheet1的最后一列。话不多说,先上代码:importpandasaspd...
- python中pandas读取excel单列及连续多列数据
-
案例:想获取test.xls中C列、H列以后(当H列后列数未知时)的所有数据。importpandasaspdfile_name=r'D:\test.xls'#表格绝对...
你 发表评论:
欢迎- 一周热门
- 最近发表
- 标签列表
-
- python计时 (73)
- python安装路径 (56)
- python类型转换 (93)
- python自定义函数 (53)
- python进度条 (67)
- python吧 (67)
- python字典遍历 (54)
- python的for循环 (65)
- python格式化字符串 (61)
- python串口编程 (60)
- python读取文件夹下所有文件 (59)
- java调用python脚本 (56)
- python操作mysql数据库 (66)
- python字典增加键值对 (53)
- python获取列表的长度 (64)
- python接口 (63)
- python调用函数 (57)
- python人脸识别 (54)
- python多态 (60)
- python命令行参数 (53)
- python匿名函数 (59)
- python打印九九乘法表 (65)
- python赋值 (62)
- python异常 (69)
- python元祖 (57)