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中的reduce内建函数使用方法指南
Aug 31 Python
使用Python将数组的元素导出到变量中(unpacking)
Oct 27 Python
浅谈Python用QQ邮箱发送邮件时授权码的问题
Jan 29 Python
用TensorFlow实现lasso回归和岭回归算法的示例
May 02 Python
设置python3为默认python的方法
Oct 31 Python
django 外键model的互相读取方法
Dec 15 Python
用Python识别人脸,人种等各种信息
Jul 15 Python
解决Python图形界面中设置尺寸的问题
Mar 05 Python
jupyter notebook运行命令显示[*](解决办法)
May 18 Python
树莓派4B安装Tensorflow的方法步骤
Jul 16 Python
解决Python 函数声明先后顺序出现的问题
Sep 02 Python
python 用struct模块解决黏包问题
Nov 07 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多次include后导致全局变量global失效的解决方法
2015/02/28 PHP
PHP函数实现从一个文本字符串中提取关键字的方法
2015/07/01 PHP
浅析Yii2 gridview实现批量删除教程
2016/04/22 PHP
PHP开发实现微信退款功能示例
2017/11/25 PHP
在laravel5.2中实现点击用户头像更改头像的方法
2019/10/14 PHP
JavaScript 函数参数是传值(byVal)还是传址(byRef) 分享
2013/07/02 Javascript
多个datatable共存造成多个表格的checkbox都被选中
2013/07/11 Javascript
javascript获取设置div的高度和宽度兼容任何浏览器
2013/09/22 Javascript
jQuery判断checkbox是否选中的小例子
2013/12/02 Javascript
在JS中如何调用JSP中的变量
2014/01/22 Javascript
JQuery基础语法小结
2015/02/27 Javascript
简化版手机端照片预览组件
2015/04/13 Javascript
JavaScript动态改变div属性的实现方法
2015/07/22 Javascript
jQuery1.9+中删除了live以后的替代方法
2016/06/17 Javascript
jQuery实现立体式数字滚动条增加效果
2016/12/21 Javascript
实现微信小程序的wxml文件和wxss文件在webstrom的支持
2017/06/12 Javascript
jquery.onoff实现简单的开关按钮功能(推荐)
2018/05/24 jQuery
js验证身份证号码记录的方法
2019/04/26 Javascript
关于layui时间回显问题的解决方法
2019/09/24 Javascript
[01:03:38]2014 DOTA2国际邀请赛中国区预选赛5.21 CNB VS CIS
2014/05/22 DOTA
python实现爬虫下载美女图片
2015/07/14 Python
独特的python循环语句
2016/11/20 Python
Python获取指定字符前面的所有字符方法
2018/05/02 Python
python 实现将小图片放到另一个较大的白色或黑色背景图片中
2019/12/12 Python
python 实现任务管理清单案例
2020/04/25 Python
Pycharm IDE的安装和使用教程详解
2020/04/30 Python
python 实现aes256加密
2020/11/27 Python
selenium框架中driver.close()和driver.quit()关闭浏览器
2020/12/08 Python
matplotlib 画动态图以及plt.ion()和plt.ioff()的使用详解
2021/01/05 Python
戴森西班牙官网:Dyson西班牙
2020/02/04 全球购物
如果Session Bean得Remove方法一直都不被调用会怎么样
2012/07/14 面试题
旅游网创业计划书
2014/01/31 职场文书
数控技校生自我鉴定
2014/04/19 职场文书
单位作风建设剖析材料
2014/10/11 职场文书
稽核岗位职责
2015/02/10 职场文书
大学生社会实践感想
2015/08/11 职场文书