python中异常捕获方法详解


Posted in Python onMarch 03, 2017

在Python中处理异常使用的是try-except代码块,try-except代码块放入让python执行的操作,同时告诉python程序如果发生了异常该怎么办,try-except这个功能其实很多入门书籍中都放到了高级篇幅里,在入门的时候一般不会讲这个使用,尤其是作为运维人员,如果你经常写shell,转到python后估计也很少使用这个功能,这功能我觉得说明了shell和python的一个重要区别,因为python是一门真正的编程语言,像其它的编程语言php,java等都会提供异常捕获功能,用这些程序写出的代码是要健壮性的,如果你阅读一些其他人写的程序代码,尤其是一些socket编程方面的代码,很多都是try…except…,有的还except好多个,来判断各种各样的情况,既然这个功能这么有用,我们就来尽快了解下看如何使用的吧。

第一我们先看看它的语法,语法很简单,就是在try-except中放入你想要执行的代码块,例如:、

try:
  somecode1
except 异常类型/名称:
  somecode2

这是最简单的一种情况,如果情况复杂可以使用多个except句子,例如:

try:
  somecode0
except 异常类型/名称1:
  somecode1
except 异常2:
  somecode2
except 异常3:
  somecode3

try-except还有更高级的用法,加入else,finally等,今天我们不展开说了有兴趣的可以自己深入研究下。

接下来我们来看一个简单例子,读写文件我们经常的操作,一个常见的问题就是找不到文件,或者文件名称,路径不正确,对这种情况,你就可以采用try-except代码块直观的方式来处理了:

try:
  withopen(filename, 'r+') as fp:
    data = fp.read()
exceptIOError:
  msg = 'sorry, can not read or write this ' + filename
  printmsg

我们再看一个多except的例子,2个数字相减:

loop = 1
while loop == 1:
  try:
    a = input('请输入第一个数字> ')
    b = input('请输入第二个数字 > ')
  exceptNameError:
    print "请输入数字,不能输入字母"
 continue
  exceptSyntaxError:
    print "请仅输入一个数字."
 continue
  print a - b
  try:
    loop = input('按1再开始 > ')
  except (NameError,SyntaxError):
    loop = 0

以上二个例子就是最简单的try-except的用法了,如果想要保证脚本的健壮性,后续可多用try-except代码块吧,这会让你的代码看起来更专业。

Python 相关文章推荐
Python 文件和输入输出小结
Oct 09 Python
pandas数据分组和聚合操作方法
Apr 11 Python
python十进制和二进制的转换方法(含浮点数)
Jul 07 Python
django之跨表查询及添加记录的示例代码
Oct 16 Python
django+echart绘制曲线图的方法示例
Nov 26 Python
VSCode Python开发环境配置的详细步骤
Feb 22 Python
Python3实现的旋转矩阵图像算法示例
Apr 03 Python
Django中使用 Closure Table 储存无限分级数据
Jun 06 Python
PyCharm-错误-找不到指定文件python.exe的解决方法
Jul 01 Python
Pytorch实现各种2d卷积示例
Dec 30 Python
基于Python获取docx/doc文件内容代码解析
Feb 17 Python
Python函数递归调用实现原理实例解析
Aug 11 Python
python利用不到一百行代码实现一个小siri
Mar 02 #Python
Python正则表达式教程之三:贪婪/非贪婪特性
Mar 02 #Python
Python正则表达式教程之二:捕获篇
Mar 02 #Python
Python正则表达式教程之一:基础篇
Mar 02 #Python
Python单例模式实例详解
Mar 01 #Python
python实现字典(dict)和字符串(string)的相互转换方法
Mar 01 #Python
python 截取 取出一部分的字符串方法
Mar 01 #Python
You might like
CI框架自动加载session出现报错的解决办法
2014/06/17 PHP
解决FireFox下[使用event很麻烦]的问题
2006/11/26 Javascript
jQuery 表格工具集
2010/04/25 Javascript
理解Javascript_13_执行模型详解
2010/10/20 Javascript
Jquery知识点一 Jquery的ready和Dom的onload的区别
2011/01/15 Javascript
通过JavaScript控制字体大小的代码
2011/10/04 Javascript
吐槽一下我所了解的Node.js
2014/10/08 Javascript
轻松创建nodejs服务器(9):实现非阻塞操作
2014/12/18 NodeJs
javascript实现链接单选效果的方法
2015/05/13 Javascript
对JavaScript的全文搜索实现相关度评分的功能的方法
2015/06/24 Javascript
JavaScript获取各大浏览器信息图示
2015/11/20 Javascript
jQuery手动点击实现图片轮播特效
2020/04/20 Javascript
javascript基于prototype实现类似OOP继承的方法
2015/12/16 Javascript
Backbone View 之间通信的三种方式
2016/08/09 Javascript
js 实现获取name 相同的页面元素并循环遍历的方法
2017/02/14 Javascript
jquery实现图片平滑滚动详解
2017/03/22 jQuery
jQuery树插件zTree使用方法详解
2017/05/02 jQuery
Bootstrap table使用方法总结
2017/05/10 Javascript
webpack+vuex+axios 跨域请求数据的示例代码
2018/03/06 Javascript
JavaScript实现小球沿正弦曲线运动
2020/09/07 Javascript
nodejs实现日志读取、日志查找及日志刷新的方法分析
2019/05/20 NodeJs
[01:09:24]Ti4开幕式
2014/07/19 DOTA
[02:33]DOTA2亚洲邀请赛趣味视频之吐真话筒
2018/03/31 DOTA
python使用标准库根据进程名如何获取进程的pid详解
2017/10/31 Python
Django框架实现的简单分页功能示例
2018/12/04 Python
在Python中调用Ping命令,批量IP的方法
2019/01/26 Python
windows下安装Python虚拟环境virtualenvwrapper-win
2019/06/14 Python
Django 创建/删除用户的示例代码
2019/07/24 Python
FFrpc python客户端lib使用解析
2019/08/24 Python
PyCharm 2019.3发布增加了新功能一览
2019/12/08 Python
vue常用指令代码实例总结
2020/03/16 Python
浅谈keras.callbacks设置模型保存策略
2020/06/18 Python
Python Process创建进程的2种方法详解
2021/01/25 Python
事业单位竞聘上岗实施方案
2014/03/28 职场文书
学习雷锋活动总结
2014/04/29 职场文书
基于Python绘制子图及子图刻度的变换等的问题
2021/05/23 Python