首页 / 知识
Python的异常处理
2023-11-12 13:43:00
什么是异常?
异常即是一个事件,该事件会在程序执行过程中发生,影响了程序的正常执行。
一般情况下,在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("这是一个测试文件,用于测试异常!!")
exceptIOError:
print"Error:没有找到文件或读取文件失败"
else:
print"内容写入文件成功"
fh.close()
以上程序输出结果:
$pythontest.py
内容写入文件成功
$cattestfile#查看写入的内容
这是一个测试文件,用于测试异常!!
实例
下面是简单的例子,它打开一个文件,在该文件中的内容写入内容,但文件没有写入权限,发生了异常:
#!/usr/bin/python
#-*-coding:UTF-8-*-
try:
fh=open("testfile","w")
fh.write("这是一个测试文件,用于测试异常!!")
exceptIOError:
print"Error:没有找到文件或读取文件失败"
else:
print"内容写入文件成功"
fh.close()
在执行代码前为了测试方便,我们可以先去掉testfile文件的写权限,命令如下:
chmod-wtestfile
再执行以上代码:
$pythontest.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:没有找到文件或读取文件失败"
如果打开的文件没有可写权限,输出如下所示:
$pythontest.py
Error:没有找到文件或读取文件失败
同样的例子也可以写成如下方式:
#!/usr/bin/python
#-*-coding:UTF-8-*-
try:
fh=open("testfile","w")
try:
fh.write("这是一个测试文件,用于测试异常!!")
finally:
print"关闭文件"
fh.close()
exceptIOError:
print"Error:没有找到文件或读取文件失败"
当在try块中抛出一个异常,立即执行finally块代码。
finally块中的所有语句执行后,异常被再次触发,并执行except块代码。
参数的内容不同于异常。
以上内容为大家介绍了Python的异常处理,希望对大家有所帮助,如果想要了解更多Python相关知识,请关注我们http://www.mobiletrain.org/
最新内容
相关内容
建立文件的linux命令?
建立文件的linux命令?,名字,系统,文件,命令,文件名,时间,名称,首次,密码,目录,linux怎么创建目录和文件1、进入linux系统并终端,输入命令”cd/“下载文件命令linux?
下载文件命令linux?,软件,系统,网络,工具,中心,服务,情况,名称,设备,代理,LINUX系统如何下载东西?1、wget是linux下一个从网络上自动下载文件linux命令行传文件?
linux命令行传文件?,手机,电脑,百度,数据,密码,位置,命令,文件,目录,数据库,Linux命令行上传文件到百度网盘在下边图示位置粘贴授权码,耐心等待嵌入式linux命令语句?
嵌入式linux命令语句?,系统,环境,基础,网络,软件,基础知识,服务,设备,管理,嵌入式,嵌入式linux系统开发详解_嵌入式linux系统介绍嵌入式Linux怎么把数据库导入navicat?
怎么把数据库导入navicat?,软件,信息,密码,管理,数据库,服务,电脑,按钮,类型,文件,Navicat是一个强大的数据库管理工具,它可以连接和管理多种数Python中有哪些方法可以解压文件?
Python中有哪些方法可以解压文件?,工具,系统,工作,培训,文件,文件夹,方法,窗体,不同于,以下内容,在Python学习和日常使用中,很容易造成文件过大报名Python培训选择哪种方式比较好
报名Python培训选择哪种方式比较好?,培训,工作,基础,时间,情况,在线,最划算,环境,系统,方式,Python不仅是一种高级的编程语言,而且还是一种应用Python数据分析有哪些重要的库?
Python数据分析有哪些重要的库?,数据,分析,标准,庞大,通用,平台,培训,工具,基础,灵活,众所周知,有很多编程语言都可以应用于数据分析领域,但PythPython数据分析相关的技术
Python数据分析相关的技术,数据,工具,化学,设计,分析,网络,软件,系统,工程,商业,1.机器学习和计算机视觉Crab:灵活、快速的推荐引擎gensim:人性深圳python培训课程哪家靠谱?
深圳python培训课程哪家靠谱?,深圳,人工智能,培训,检测,分析,实战,行业,转型,时间,体系,Python语言简单、易学、易读、易维护,学习成本和时间相Python 炫技操作:条件语句的七种写
Python 炫技操作:条件语句的七种写法,代码,培训,工程,公共,写法,语法,例子,发烧友,操作,语句,有的人说Python入门容易,但是精通难的语言,这点我Python数据分析要学什么数学
Python数据分析要学什么数学,数据,分析,技术,基础,体系,信息,基础知识,培训,下降,量化,因为不知道所学的数学知识到底有什么用。对于IT公司的