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中字典(dict)和列表(list)的排序方法实例
Jun 16 Python
Python基于Tkinter的HelloWorld入门实例
Jun 17 Python
浅谈python中截取字符函数strip,lstrip,rstrip
Jul 17 Python
python 使用get_argument获取url query参数
Apr 28 Python
详解python之多进程和进程池(Processing库)
Jun 09 Python
详解 Python 与文件对象共事的实例
Sep 11 Python
python画柱状图--不同颜色并显示数值的方法
Dec 13 Python
Python列表(List)知识点总结
Feb 18 Python
详解python使用turtle库来画一朵花
Mar 21 Python
Python Django 实现简单注册功能过程详解
Jul 29 Python
Python Pandas 转换unix时间戳方式
Dec 07 Python
python如何实现不可变字典inmutabledict
Jan 08 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中常用编辑器推荐
2007/01/02 PHP
让你成为更出色的PHP开发者的10个技巧
2011/02/25 PHP
php定界符
2014/06/19 PHP
初识通用数据库操作类――前端easyui-datagrid,form(php)
2015/07/31 PHP
php获取汉字拼音首字母的方法
2015/10/21 PHP
基于jQuery的简单九宫格实现代码
2012/08/09 Javascript
Array.prototype.concat不是通用方法反驳[译]
2012/09/20 Javascript
原生javascript和jquery判断浏览器版本等信息
2013/07/04 Javascript
jquery实现搜索框常见效果的方法
2015/01/22 Javascript
Jquery 实现弹出层插件
2015/01/28 Javascript
Grunt入门教程(自动任务运行器)
2015/08/06 Javascript
jQuery事件绑定方法学习总结(推荐)
2016/11/21 Javascript
对称加密与非对称加密优缺点详解
2017/02/06 Javascript
jquery-file-upload 文件上传带进度条效果
2017/11/21 jQuery
JavaScript中常见内置函数用法示例
2018/05/14 Javascript
vue2.0项目实现路由跳转的方法详解
2018/06/21 Javascript
Vue数据绑定实例写法
2019/08/06 Javascript
整理 node-sass 安装失败的原因及解决办法(小结)
2020/02/19 Javascript
如何在vue中使用kindeditor富文本编辑器
2020/12/19 Vue.js
[46:42]DOTA2-DPC中国联赛正赛 Aster vs Magma BO3 第二场 3月5日
2021/03/11 DOTA
python不带重复的全排列代码
2013/08/13 Python
Python字符串转换成浮点数函数分享
2015/07/24 Python
Python标准库笔记struct模块的使用
2018/02/22 Python
python实现图片转字符小工具
2019/04/30 Python
Tensorflow的梯度异步更新示例
2020/01/23 Python
Python拼接字符串的7种方式详解
2020/03/19 Python
Python yield的用法实例分析
2020/03/06 Python
CSS3中:nth-child和:nth-of-type的区别深入理解
2014/03/10 HTML / CSS
优瑞自动咖啡机官网:Jura
2018/09/29 全球购物
大学生年度自我鉴定
2013/10/31 职场文书
校园公益广告语
2014/03/13 职场文书
幼儿园中班评语大全
2014/04/17 职场文书
一年级学生评语
2014/04/23 职场文书
小学五年级(说明文3篇)
2019/08/13 职场文书
HTML+JS实现在线朗读器
2022/02/15 Javascript
nginx日志格式分析和修改
2022/04/28 Servers