python语言关键字finally_Python中try/except/finally关键字的使用,python,tryexceptfinally

news/2024/8/26 11:07:54 标签: python语言关键字finally

和JAVA语言一样,Python也用try关键字来处理异常。

为什么处理异常非常重要呢?

主要原因

:很多操作只要‘尝试’了才知道会不会成功。比如,

用python打开一个txt文件,并把txt文件中的字符串转换成整型数

try的搭配通常有“try... except...”,也可以有"try...finally"等。我们先看"try...except...",

实验准备:

1. 一个txt文件,t1.txt,里面内容是"123":

123

2. 一个python脚本, try.py :

file_path = 't1.txt'

try:

f = open(file_path, 'r')

str_content = f.read()

a = int(str_content)

print(a)

except Exception:

print('hh')

直接运行脚本,

会发现except下面的print('hh')不会运行

。因为txt文件中的内容正常(是数字型的字符串)。那么,如果把t1.txt中的内容换成:

abc

再运行try.py,会发现脚本只会输出'hh',说明代码汇报了异常。

因为字符'abc'没办法用int()变成整型数字

到这里,一个最基本的异常处理实验就完成了

。继续往下看,

如果t1.txt文件本就不存在呢?

python脚本读取这个txt时,同样也会出现异常的,这是另一种异常。不修改上述脚本try.py中的代码运行,会发现还是会输出'hh',报告异常。但作为代码老司机,还是想区分这两种异常。那么,就需要代码汇报更细致一点,修改后如下:

file_path = 't1.txt'

try:

f = open(file_path, 'r')

str_content = f.read()

a = int(str_content)

print(a)

except ValueError:

print(file_path + '中内容不可转化为数字!')

except FileNotFound:

print(file_paht + '文件不存在!')

except Exception:

print('未知错误!')

这样就麻溜儿处理了两种不同的异常。这里的except后面接的"ValueError"和"FileNotFound"关键字是怎么知道的呢?

只需制造同样的异常,看console提示就行了

到这里,try...except...关键字就差不多了。我们再看看finally的用法:

file_path = 't1.txt'

try:

f = open(file_path, 'r')

str_content = f.read()

a = int(str_content)

print(a)

except Exception:

print('未知错误!')

finally:

print(file_path)

相比except而言,finally关键字简单多了,代表最后运行的代码。无论有没有异常,都会运行的代码块,我们就放到finally中。那么,上述代码就相当于:

file_path = 't1.txt'

try:

f = open(file_path, 'r')

str_content = f.read()

a = int(str_content)

print(a)

except Exception:

print('未知错误!')

print(file_path)

官方描述为:

A finally clause is always executed before leaving the try statement, whether an exception has occurred or not.


http://www.niftyadmin.cn/n/927183.html

相关文章

python 提取一个单词的所有字母_如何用python提取单词(正则表达式or分割)

“What brings u here today!”(今天什么风把你吹过来了!),相信大家也是遇到和我一样的难题了吧,想把字母提取出来很简单,但是想把整个单词(还不是相同的单词)给提取出来就有点困难了…

java使用xml存储数据_「爬虫四步走」手把手教你使用Python抓取并存储网页数据

爬虫是Python的一个重要的应用,使用Python爬虫我们可以轻松的从互联网中抓取我们想要的数据,本文将基于爬取B站视频热搜榜单数据并存储为例,详细介绍Python爬虫的基本流程。如果你还在入门爬虫阶段或者不清楚爬虫的具体工作流程,那…

骁龙芯片性能排行2020_急速快讯!手机芯片性能排行榜

阅读本文前,请您先点击上面的“ 蓝色字体”,再点击“关注”,这样您就可以继续免费收到文章了。每天都有分享,完全是免费订阅,请放心关注。 …

vba 定义类_excel编程系列基础:认识VBA的编辑器VBE

编按:哈喽,大家好!VBA实战入门教程第5篇,我们将从九九乘法表开始和结束今天的教程。之中,我们会认识VBE,也就是VBA代码的编辑器。VBE的基本概念、打开方式,以及它的布局和主要功能,它…

python与数据思维基础笔记_python数据挖掘和机器学习实战-学习笔记1

终于学完python基础、数据分析之后开始了机器学习!开心! 1.人工智能、机器学习、数据挖掘 人工智能是智能机器,如计算机所执行的与人类智能有关的活动,如识别、判断、证明、学习和问题求解等思维活动。即研究人类智能活动规律的一…

vue hot true 不起作用_59.Vue 使用webpack构建vue项目

前言在前面的篇章中,已经说明了 webpack4 的基本使用,那么本章节开始在 webpack4 中构建vue项目,同时对比看看这种构建方式,与在网页script导入 vue.js 中的区别。构建webpack项目开发首先重新构建webpack项目。初始化项目文件结构…

用asp.net实现日历打卡_“叮”—你的习惯已养成(习惯打卡APP介绍)

我用过蛮多习惯打卡APP,能叫得出名字,不管是付费还是免费,我几乎都试用过。但是最终只留下了四个打卡APP:小日常、Daily Goals、薄荷健康、滴答清单。没错,我每天需要打开4个APP打卡。但其实上,只有小日常和…

linux mysql查看所有表_SQL Server 与 MySQL存储引擎

SQLServer 与 MySQL 出自于不同的公司,最大的区别在于一个开源、一个不开源;不开源的提供低版本免费使用,无法使用高级功能,而开源的就不一样,提供所有的功能使用;关于存储引擎本人能力有限学识浅薄&#x…