Python异常处理操作实例详解


Posted in Python onMay 10, 2018

本文实例讲述了Python异常处理操作。分享给大家供大家参考,具体如下:

一、异常处理的引入

>>>whileTrue:
try:
x = int(input("Please enter a number: "))
break
exceptValueError:
print("Oops! That was no valid number. Try again ")
Please enter a number: y
Oops!That was no valid number.Try again
Please enter a number:1.3
Oops!That was no valid number.Try again
Please enter a number:5

二、try语句工作方式

1、执行try子句(在关键字try和关键字except之间的语句)

2、如果没有异常发生,忽略except子句,try子句执行后结束。

3、如果在执行try子句的过程中发生了异常,那么try子句余下的部分将被忽略。如果异常的类型和 except 之后的名称相符,那么对应的except子句将被执行。最后执行 try 语句之后的代码。

4、如果一个异常没有与任何的except匹配,那么这个异常将会传递给上层的try中。

5、一个 try 语句可能包含多个except子句,分别来处理不同的特定的异常。最多只有一个分支会被执行。

6、处理程序将只针对对应的try子句中的异常进行处理。

7、一个except子句可以同时处理多个异常,这些异常将被放在一个括号里成为一个元组,例如:

except (RuntimeError, TypeError, NameError):
    pass

8、最后一个except子句可以忽略异常的名称,它将被当作通配符使用。你可以使用这种方法打印一个错误信息,然后再次把异常抛出。

>>>import os
>>>try:
f = open('myfile.txt')
s = f.readline()
i = int(s.strip())
exceptOSErroras err:
print("OS error: {0}".format(err))
exceptValueError:
print("Could not convert data to an integer.")
except:
print("Unexpected error:", sys.exc_info()[0])
raise
OS error:[Errno2]No such file or directory:'myfile.txt'

三、else子句

try except 语句还有一个可选的else子句,如果使用这个子句,那么必须放在所有的except子句之后。这个子句将在try子句没有发生任何异常的时候执行。

>>>try:
f = open('a.txt','r')
exceptIOError:
print('cannot open')
except:
print('other ERR')
else:
print('file close')
f.close()
cannot open

使用 else 子句比把所有的语句都放在 try 子句里面要好,这样可以避免一些意想不到的、而except又没有捕获的异常。

四、异常处理try中函数

异常处理并不仅仅处理那些直接发生在try子句中的异常,而且还能处理子句中调用的函数(甚至间接调用的函数)里抛出的异常。

>>>def this_fails():
x =1/0
>>>try:
this_fails()
exceptZeroDivisionErroras err:
print('Handling run-time error:', err)
Handling run-time error: division by zero

更多Python相关内容感兴趣的读者可查看本站专题:《Python入门与进阶经典教程》、《Python字符串操作技巧汇总》、《Python列表(list)操作技巧总结》、《Python编码操作技巧总结》、《Python数据结构与算法教程》、《Python函数使用技巧总结》及《Python文件与目录操作技巧汇总》

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
Python中的Classes和Metaclasses详解
Apr 02 Python
在Python中操作时间之tzset()方法的使用教程
May 22 Python
分析python切片原理和方法
Dec 19 Python
Python图形绘制操作之正弦曲线实现方法分析
Dec 25 Python
详解python 模拟豆瓣登录(豆瓣6.0)
Apr 18 Python
python射线法判断一个点在图形区域内外
Jun 28 Python
python 图片去噪的方法示例
Jul 09 Python
python+Django+pycharm+mysql 搭建首个web项目详解
Nov 29 Python
基于logstash实现日志文件同步elasticsearch
Aug 06 Python
关于python中模块和重载的问题
Nov 02 Python
Python获取指定日期是"星期几"的6种方法
Mar 13 Python
Python中time标准库的使用教程
Apr 13 Python
解决python3 网络请求路径包含中文的问题
May 10 #Python
Python之文字转图片方法
May 10 #Python
Python实现查看系统启动项功能示例
May 10 #Python
python3下使用cv2.imwrite存储带有中文路径图片的方法
May 10 #Python
Python实现修改IE注册表功能示例
May 10 #Python
Python图像处理之识别图像中的文字(实例讲解)
May 10 #Python
python 识别图片中的文字信息方法
May 10 #Python
You might like
PHP字符转义相关函数小结(php下的转义字符串)
2007/04/12 PHP
PHP+JS实现大规模数据提交的方法
2015/07/02 PHP
超级简单的图片防盗(HTML),好用
2007/04/08 Javascript
JQuery团队打造的javascript单元测试工具QUnit介绍
2010/02/26 Javascript
JQuery扩展插件Validate 2通过参数设置验证规则
2011/09/05 Javascript
JS刷新框架外页面七种实现代码
2013/02/18 Javascript
js实现显示当前状态的导航效果代码
2015/08/28 Javascript
js定时器实例分享
2016/12/20 Javascript
详解Vue2+Echarts实现多种图表数据可视化Dashboard(附源码)
2017/03/21 Javascript
vue loadmore组件上拉加载更多功能示例代码
2017/07/19 Javascript
ui-router中使用ocLazyLoad和resolve的具体方法
2017/10/18 Javascript
js原生日历的实例(推荐)
2017/10/31 Javascript
实例详解Node.js 函数
2018/06/10 Javascript
详解Node.js一行命令上传本地文件到服务器
2019/04/22 Javascript
vue实现下拉加载其实没那么复杂
2019/08/13 Javascript
微信小程序激励式视频广告组件使用详解
2019/12/06 Javascript
vue实现简单跑马灯效果
2020/05/25 Javascript
python求列表交集的方法汇总
2014/11/10 Python
利用python打印出菱形、三角形以及矩形的方法实例
2017/08/08 Python
如何利用Python分析出微信朋友男女统计图
2019/01/25 Python
python原类、类的创建过程与方法详解
2019/07/19 Python
python爬虫 爬取58同城上所有城市的租房信息详解
2019/07/30 Python
python yield和Generator函数用法详解
2020/02/10 Python
Python如何实现的二分查找算法
2020/05/27 Python
keras的三种模型实现与区别说明
2020/07/03 Python
基于CentOS搭建Python Django环境过程解析
2020/08/24 Python
BookOutlet加拿大:在网上书店购买廉价折扣图书和小说
2018/10/05 全球购物
成都思必达公司C#程序员招聘面试题
2013/06/26 面试题
计算机应用专业应届毕业生中文求职信范文
2013/11/29 职场文书
数控个人求职信范文
2014/02/03 职场文书
岗位职责说明书
2014/05/07 职场文书
卖房授权委托书样本
2014/10/05 职场文书
2019年教师节活动策划方案
2019/09/09 职场文书
用python批量解压带密码的压缩包
2021/05/31 Python
MySQL 8.0 Online DDL快速加列的相关总结
2021/06/02 MySQL
django中websocket的具体使用
2022/01/22 Python