python3捕获异常_python中异常捕获方法详解

在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代码块吧,这会让你的代码看起来更专业。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/350539.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

自定义java线程池_我的Java自定义线程池执行器

自定义java线程池ThreadPoolExecutor是Java并发api添加的一项功能,可以有效地维护和重用线程,因此我们的程序不必担心创建和销毁线程,也不必关注核心功能。 我创建了一个自定义线程池执行程序,以更好地了解线程池执行程序的工作方…

es6方法过滤掉两个数组中对象id值相等的项

let arr1[{id:1,name:张三},{id:2,name:李四}] let arr2[{id:1,name:张三},{id:3,name:王五},{id:44,name:王柳},{id:45,name:王琦},] let addarr2.filter(item>!arr1.some(ele>ele.iditem.id)) console.log(add) const arr1 [{ id: 1, name: 网 }, { id: 2, name: 二位…

大尾和小尾

字节存放有大尾和小尾之分。如果对应数据的高字节存放在低地址就是大尾,反之,高字节存放在高地址的就是小尾。 比如 short int a 0x1234 大尾存放时: 偏移地址 存放内容 0x0000 0x12 0x0001 0x34 小尾存放: 偏移…

jedis使用_Redis的三个框架:Jedis,Redisson,Lettuce

Jedis api 在线网址:http://tool.oschina.net/uploads/apidocs/redis/clients/jedis/Jedis.htmlredisson 官网地址:https://redisson.org/redisson git项目地址:https://github.com/redisson/redissonlettuce 官网地址:https://le…

端到端BPM(带有DMN标记)

下周的红帽峰会即将成为有史以来最好的峰会之一! 而且,如果您是Drools或jBPM的狂热者,您会很忙 :Signavio和Red Hat之间的合作伙伴关系是我们为您准备的另一个顶级演讲。 邓肯道尔(Duncan Doyle)和汤姆德贝…

pycharm写python字典_pythonpycharm安装基础语法

1.python安装安装python3,建议安装python3.7,不要安装python2安装时需要注意的地方:安装完成后,验证python是否安装成功,在cmd下输入python,出现python的版本则表明安装成功验证pip是否安装成功&#xff0c…

模板库 | 销售管理类报表,邀您提反馈

“葡萄城报表模板库是一款免费的报表制作、学习和参考工具,包含了超过 200 张高质量报表模板,涵盖了 16 大行业和 50 多种报表类型,为 30 余万报表开发者提供价值参考。” 近期,葡萄城推出了“寻找真正的报表大师”活动&#xff0…

矩阵的逆、伪逆

1、矩阵的逆 定义: 设A是数域上的一个n阶方阵,若在相同数域上存在另一个n阶矩阵B,使得: ABBAI。 则我们称B是A的逆矩阵,而A则被称为可逆矩阵。 可逆条件: A是可逆矩阵的充分必要条件是,即可…

PLSQL登录报错ORA-12154

https://blog.csdn.net/naomi_qing/article/details/79583453 转载于:https://www.cnblogs.com/2016-cxp/p/10878952.html

python将dataframe导出为csv_python将dataframe转换为csv,为每列导出一个格式独特的文本文件...

我正在Win7 64位上使用Python2.7.7和熊猫。我的输入数据最初是以空格分隔的,右对齐的。我现在有数据作为熊猫数据帧,我导出为一个csv。我想写一个空格分隔的右对齐文本文件。列有字符串、int和float。我试图用这个来格式化其中一个列:df_fg[M…

jax-rs/jersey_在Oracle Cloud上的Prime-UI,JAX-RS和Jersey和Gson

jax-rs/jersey如今,Oracle云无处不在。 最初,拉里(Larry)否认在很长一段时间内都需要云,并且在去年的开放世界(Open World)之后就发布了一些非常早的公告,而且可用性很差&#xff0c…

OpenCV copyMakeBorder()来拓展边界

使用OpenCV提供的函数copyMakeBorder()来拓展边界,其原型如下 void copyMakeBorder( InputArray src, OutputArray dst,int top, int bottom, int left, int right, int borderType,const Scalar& value Scalar())​ src:输入的数组。 dst&…

Flutter-现有iOS工程引入Flutter

前言 Flutter 是一个很有潜力的框架,但是目前使用Flutter的APP并不算很多,相关资料并不丰富,介绍现有工程引入Flutter的相关文章也比较少。项目从零开始,引入Flutter操作比较简单,但是现有工程引入Flutter 需要费很多精…

python有什么隐藏功能_Python的隐藏功能

文章目录Python编程语言的鲜为人知的但有用的功能是什么?尝试限制Python核心的答案。每个答案的一个功能给出一个功能的例子和简短描述,而不仅仅是文档的链接。使用标题作为第一行标记该功能。Quick links to answers:Chaining comparison operators:>…

Spring Boot –适合您的靴子!

您需要一点弹簧吗? 厌倦了所有繁琐的Web服务器并部署WAR文件? 好吧,你很幸运。 Spring Boot对构建可用于生产的Spring应用程序持坚定态度。 Spring Boot倾向于使用约定而非配置,它旨在使您尽快启动并运行。 在此博客中&#xff0…

OpenCV 像素的读取与操作

像素读取和操作 1. 利用cv::Mat的at函数,直接访问具体地址 void get_setImagePixel(char *imagePath, int x, int y){// Mat image imread(imagePath , 0);Mat image imread(imagePath, 1);//得宽高int w image.cols;int h image.rows;int channels image.c…

[http]HTTP状态码含义

HTTP状态码 当浏览者访问一个网页时,浏览者的浏览器会向网页所在服务器发出请求。当浏览器接收并显示网页前,此网页所在的服务器会返回一个包含HTTP状态码的信息头(server header)用以响应浏览器的请求。 HTTP状态码的英文为HTTP …

不等式约束的拉格朗日乘数法_Abaqus血管支架仿真|接触约束执行方式

根据支架的建模基础、几何和网格划分、单元选择、材料和截面属性、分析步设置、载荷接触和约束、收敛调整,以及后处理、参数优化等内容。接着Abaqus血管支架仿真|建模基础、Abaqus血管支架仿真|几何和网格划分、Abaqus血管支架仿真|单元选择、Abaqus血管支架仿真|材…

OpenCV形态学运算

1.OpenCV形态学运算morphologyEx(开运算 、闭运算 、形态学梯度 、顶帽运算 、黑帽运算 、腐蚀运算 、膨胀运算 、击中击不中运算) void cv::morphologyEx (InputArray src,OutputArray dst,int op,InputArray kernel,Point anchor Point(-1,-1),int …

python判断成绩等级_Python计算山东新高考选考科目卷面原始成绩为等级成绩

原标题:Python计算山东新高考选考科目卷面原始成绩为等级成绩图书详情:配套资源:用书教师可以免费获取教学大纲、教案、课件、源码、习题答案、课堂管理与考试系统。山东省新高考政策33中,考生必考科目有语文、数学、英语&#xf…