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利用hook技术破解https的实例代码
Mar 25 Python
django轻松使用富文本编辑器CKEditor的方法
Mar 30 Python
python算法演练_One Rule 算法(详解)
May 17 Python
Python内建函数之raw_input()与input()代码解析
Oct 26 Python
python中学习K-Means和图片压缩
Nov 20 Python
Python面向对象思想与应用入门教程【类与对象】
Apr 12 Python
Django中使用CORS实现跨域请求过程解析
Aug 05 Python
python内存管理机制原理详解
Aug 12 Python
python判断单向链表是否包括环,若包含则计算环入口的节点实例分析
Oct 23 Python
Pytorch高阶OP操作where,gather原理
Apr 30 Python
Python图像识别+KNN求解数独的实现
Nov 13 Python
python os.rename实例用法详解
Dec 06 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中数据库连接方式pdo和mysqli对比分析
2015/02/25 PHP
适用于初学者的简易PHP文件上传类
2015/10/29 PHP
php批量转换文件夹下所有文件编码的函数类
2017/08/06 PHP
jquery实现非叠加式的搜索框提示效果
2014/01/07 Javascript
jquery easyui 结合jsp简单展现table数据示例
2014/04/18 Javascript
JavaScript实现从数组中选出和等于固定值的n个数
2014/09/03 Javascript
jQuery使用post方法提交数据实例
2015/03/25 Javascript
比较常见的javascript中定义函数的区别
2015/11/09 Javascript
详解Backbone.js框架中的模型Model与其集合collection
2016/05/05 Javascript
jQuery插件开发汇总
2016/05/15 Javascript
jQuery实现优雅的弹窗效果(6)
2017/02/08 Javascript
微信小程序学习之数据处理详解
2017/07/05 Javascript
vue.js简单配置axios的方法详解
2017/12/13 Javascript
Webpack打包字体font-awesome的方法示例
2018/04/26 Javascript
javascript数据结构之多叉树经典操作示例【创建、添加、遍历、移除等】
2018/08/01 Javascript
JS/HTML5游戏常用算法之路径搜索算法 随机迷宫算法详解【普里姆算法】
2018/12/13 Javascript
Vue组件教程之Toast(Vue.extend 方式)详解
2019/01/27 Javascript
使用typescript改造koa开发框架的实现
2020/02/04 Javascript
vue 出现data-v-xxx的原因及解决
2020/08/04 Javascript
vue pages 多入口项目 + chainWebpack 全局引用缩写说明
2020/09/21 Javascript
react ant Design手动设置表单的值操作
2020/10/31 Javascript
python使用marshal模块序列化实例
2014/09/25 Python
python获取文件扩展名的方法
2015/07/06 Python
对python 矩阵转置transpose的实例讲解
2018/04/17 Python
python 获取等间隔的数组实例
2019/07/04 Python
PyQt使用QPropertyAnimation开发简单动画
2020/04/02 Python
Python自定义聚合函数merge与transform区别详解
2020/05/26 Python
几个CSS3的flex弹性盒模型布局的简单例子演示
2016/05/12 HTML / CSS
html5的canvas方法使用指南
2014/12/15 HTML / CSS
SIXPAD智能健身仪英国官网:革命性的训练装备品牌
2018/09/27 全球购物
线程同步的方法
2016/11/23 面试题
函授本科自我鉴定
2013/11/03 职场文书
2015年圣诞节活动总结
2015/03/24 职场文书
一封真诚的自荐信帮你赢得机会
2019/05/07 职场文书
使用pytorch实现线性回归
2021/04/11 Python
JavaScript 数组去重详解
2021/09/15 Javascript