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基于socket实现网络广播的方法
Apr 29 Python
Python中Class类用法实例分析
Nov 12 Python
Python实现命令行通讯录实例教程
Aug 18 Python
用python实现百度翻译的示例代码
Mar 09 Python
Pycharm设置utf-8自动显示方法
Jan 17 Python
Python3实现的旋转矩阵图像算法示例
Apr 03 Python
python中for循环把字符串或者字典添加到列表的方法
Jul 20 Python
如何解决tensorflow恢复模型的特定值时出错
Feb 06 Python
详解python如何引用包package
Jun 07 Python
什么是python的自省
Jun 21 Python
基于Python和C++实现删除链表的节点
Jul 06 Python
Python如何设置指定窗口为前台活动窗口
Aug 12 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
php学习之 数组声明
2011/06/09 PHP
CI框架中数据库操作函数$this->db->where()相关用法总结
2016/05/17 PHP
为数据添加append,remove功能
2006/10/03 Javascript
JavaScript修改css样式style
2008/04/15 Javascript
基于jquery的地址栏射击游戏代码
2011/03/10 Javascript
js算法中的排序、数组去重详细概述
2013/10/14 Javascript
js页面跳转的常用方法整理
2013/10/18 Javascript
Mac地址验证的javascript代码
2013/11/09 Javascript
js实现全屏漂浮广告移入光标停止移动
2013/12/02 Javascript
javascript页面动态显示时间变化示例代码
2013/12/18 Javascript
nw.js实现类似微信的聊天软件
2015/03/16 Javascript
AngularJS轻松实现双击排序的功能
2016/08/30 Javascript
Js操作DOM元素及获取浏览器高宽的简单方法
2016/09/08 Javascript
BootStrap下拉菜单和滚动监听插件实现代码
2016/09/26 Javascript
Bootstrap基本组件学习笔记之分页(12)
2016/12/08 Javascript
JS实现PC手机端和嵌入式滑动拼图验证码三种效果
2017/02/15 Javascript
jQuery插件zTree实现获取一级节点数据的方法
2017/03/08 Javascript
微信小程序 ES6Promise.all批量上传文件实现代码
2017/04/14 Javascript
javascript 缓冲运动框架的实现
2017/09/29 Javascript
JavaScript实现浅拷贝与深拷贝的方法分析
2018/07/05 Javascript
如何在js代码中消灭for循环实例详解
2018/07/29 Javascript
详解Nodejs get获取远程服务器接口数据
2019/03/26 NodeJs
通过vue写一个瀑布流插件代码实例
2019/09/07 Javascript
Python实现解析Bit Torrent种子文件内容的方法
2017/08/29 Python
基于Python列表解析(列表推导式)
2018/06/23 Python
简单了解python协程的相关知识
2019/08/31 Python
Python定时从Mysql提取数据存入Redis的实现
2020/05/03 Python
New Balance天猫官方旗舰店:始于1906年,百年慢跑品牌
2017/11/15 全球购物
澳大利亚电商Catch新西兰站:Catch.co.nz
2020/05/30 全球购物
华为的Java面试题
2014/03/07 面试题
化工工艺专业求职信
2013/09/22 职场文书
暑期工社会实践报告
2015/07/13 职场文书
感恩主题班会教案
2015/08/12 职场文书
2016学校元旦晚会经典开场白台词
2015/12/03 职场文书
完美解决golang go get私有仓库的问题
2021/05/05 Golang
oracle通过存储过程上传list保存功能
2021/05/12 Oracle