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使用paramiko模块实现ssh远程登陆上传文件并执行
Jan 27 Python
在Python中操作文件之read()方法的使用教程
May 24 Python
python使用clear方法清除字典内全部数据实例
Jul 11 Python
Python中第三方库Requests库的高级用法详解
Mar 12 Python
Python 安装setuptools和pip工具操作方法(必看)
May 22 Python
对python中array.sum(axis=?)的用法介绍
Jun 28 Python
python接口自动化(十七)--Json 数据处理---一次爬坑记(详解)
Apr 18 Python
Django中create和save方法的不同
Aug 13 Python
解决reload(sys)后print失效的问题
Apr 25 Python
python smtplib发送多个email联系人的实现
Oct 09 Python
python import 上级目录的导入
Nov 03 Python
python tkinter Entry控件的焦点移动操作
May 22 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实现批量上传单个文件
2015/12/29 PHP
thinkphp5 加载静态资源路径与常量的方法
2017/12/24 PHP
php使用array_chunk函数将一个数组分割成多个数组
2018/12/05 PHP
PHP设计模式之命令模式示例详解
2020/12/20 PHP
innerHTML 和 getElementsByName 在IE下面的bug 的解决
2010/04/09 Javascript
不要在cookie中使用特殊字符的原因分析
2010/07/13 Javascript
jquery.bgiframe.js在IE9下提示INVALID_CHARACTER_ERR错误
2013/01/11 Javascript
js 获取(接收)地址栏参数值的方法
2013/04/01 Javascript
JQuery写动态树示例代码
2013/07/31 Javascript
JS+CSS实现的日本门户网站经典选项卡导航效果
2015/09/27 Javascript
JavaScript实现点击按钮就复制当前网址
2015/12/14 Javascript
修复jQuery tablesorter无法正确排序的bug(加千分位数字后)
2016/03/30 Javascript
BootStrap框架中的data-[ ]自定义属性理解(推荐)
2017/02/14 Javascript
jQuery实现简单的抽奖游戏
2017/05/05 jQuery
Angularjs自定义指令实现分页插件(DEMO)
2017/09/16 Javascript
微信小程序使用navigateTo数据传递的实例
2017/09/26 Javascript
微信小程序模板template简单用法示例
2018/12/04 Javascript
el-select数据过多懒加载的解决(loadmore)
2019/05/29 Javascript
[50:29]2014 DOTA2华西杯精英邀请赛 5 24 DK VS iG
2014/05/26 DOTA
python cookielib 登录人人网的实现代码
2012/12/19 Python
python框架django基础指南
2016/09/08 Python
Python装饰器基础概念与用法详解
2018/12/22 Python
对Python+opencv将图片生成视频的实例详解
2019/01/08 Python
Python assert语句的简单使用示例
2019/07/28 Python
Python实现钉钉订阅消息功能
2020/01/14 Python
python的列表List求均值和中位数实例
2020/03/03 Python
Python unittest单元测试openpyxl实现过程解析
2020/05/27 Python
python连接mysql有哪些方法
2020/06/24 Python
Pycharm常用快捷键总结及配置方法
2020/11/14 Python
python 制作磁力搜索工具
2021/03/04 Python
HTML5的自定义属性data-*详细介绍和JS操作实例
2014/04/10 HTML / CSS
英语邀请函范文
2015/02/02 职场文书
鸡毛信观后感
2015/06/11 职场文书
给校长的建议书作文300字
2015/09/14 职场文书
2019让人心动的商业计划书
2019/06/27 职场文书
浅谈pytorch中stack和cat的及to_tensor的坑
2021/05/20 Python