Python学习笔记之异常

Python用异常对象来表示异常情况,如果异常对象未被处理或捕捉,程序就会回溯(traceback)中止执行。

异常可以在出错时自动引发,也可以主动引发。

异常被引发后如果不被处理就会传播至程序调用的地方,直到主程序(全局作用域),如果主程序仍然没有异常处理,程序会带着栈跟踪终止。

raise:引发异常

>>> raise Exception
Traceback (most recent call last):File "<pyshell#1>", line 1, in <module>raise Exception
Exception

  >>> raise Exception("error!!!")
  Traceback (most recent call last):
  File "<pyshell#2>", line 1, in <module>
  raise Exception("error!!!")
  Exception: error!!!

常见内建异常类:

类名描述
Exception所有异常的基类
AttributeError特性引用或赋值失败时引发
IOError试图打开不存在文件(包括其他情况)时引发
IndexError在使用序列中不存在的索引时引发
KeyError使用映射中不存在的键引发
NameError找不到名字(变量)时引发
SyntaxError在代码为错误形式时引发
TypeError在内建操作或者函数应用于错误类型的对象引发 
ValueError在内建操作或者函数应用于正确的对象,但是该对象使用不合适的值引发
ZeroDivision在除法或者模除操作的第二个参数为0时引发

 

自定义异常类:继承自Exception

class DefException(Exception):pass

 

捕捉异常:使用try/except语句实现>>> try:

    x =  int(input("The first num:"))y = int(input("The second num:"))print(x/y)
except ZeroDivisionError:print("Error")The first num:5
The second num:0
Error
>>> try:x =  int(input("The first num:"))y = int(input("The second num:"))print(x/y)
except ZeroDivisionError:print("Error")
except ValueError:print("TypeError")The first num:5
The second num:o
TypeError

 

用一个块捕捉多个异常:

>>> try:x =  int(input("The first num:"))y = int(input("The second num:"))print(x/y)
except (ZeroDivisionError,ValueError):print("Error")The first num:5
The second num:0
Error

 

捕捉对象:

>>> try:x =  int(input("The first num:"))y = int(input("The second num:"))print(x/y)
except (ZeroDivisionError,ValueError) as e:print(e)The first num:5
The second num:0
division by zero

 

捕捉所有异常:

try:x = int(input("The first num:"))y = int(input("The second num:"))print(x/y)
except:print("some errors")
The first num:5
The second num:
some errors

这种方式会捕捉用户中止执行的企图,会隐藏所有程序员未想到并且未做好准备的错误。

 

对于异常情况进行处理:

 

#在输入不合法时循环,直到合法值出现退出循环
while True:try:x = int(input("The first num:"))y = int(input("The second num:"))print(x/y)except:print("Error")else:break#运行结果

The first num:5
The second num:0
Error
The first num:6
The second num:3
2.0

 

 finally子句:用在可能的异常后进行清理,不管是否有异常都要执行。在同一个try语句中,不可以和except使用。

x = None
try:x = 1/0
finally:print("cleaning")del x#结果
cleaning
Traceback (most recent call last):File "input.py", line 4, in <module>x = 1/0
ZeroDivisionError: division by zero***Repl Closed***

 

可以在一条语句中组合使用try,except,else,finally

try:x = 1/0else:print("done")
finally:print("cleaning")#运行结果
cleaning***Repl Closed***

 

转载于:https://www.cnblogs.com/HJhj/p/7423454.html

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

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

相关文章

VSFTP的使用

一、基本安装 1.安装服务 yum -y install vsftpd //centos Redhat apt-get install vsftpd //debian ubuntu 2.开启服务 service vsftpd status //查看状态&#xff0c;默认是关闭的 service vsftpd start 3.开机随操作系统启动 chkconfig vsftpd on4.添加账号 useradd -d /…

OC Swift混编-Swift.h File not found

https://www.jianshu.com/p/f860fe1718ca 2016.09.13 11:53* 字数 266 阅读 1935评论 1喜欢 1今天碰到个神坑,本人项目是OC项目,最近开始使用Swift开始替代.但是,在替代的已开始就出现问题了:新建swift文件,然后提示创建bridging-Hearder文件,然后swift可以使用OC代码了.这些都…

视觉标定,再来一波!!更简单粗暴!!!!!!

继续&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01; 一、四个坐标系简介和转换 相机模型为以后一切标定算法的关键&#xff0c;只有这边有相当透彻的理解&#xff0c;对以后的标定算法才能有更好的理解。本人研究了好长时间&#xff0c;几乎每天…

深入浅出NIO之Selector实现原理

2019独角兽企业重金招聘Python工程师标准>>> 前言 Java NIO 由以下几个核心部分组成&#xff1a; 1、Buffer 2、Channel 3、Selector Buffer和Channel在深入浅出NIO之Channel、Buffer一文中已经介绍过&#xff0c;本文主要讲解NIO的Selector实现原理。 之前进行sock…

介绍一下画图小能手matplotlib。

我们在做完数据分析的时候需要把分析出来的结果&#xff0c;做一个图形化的形象表达&#xff0c;这里我们就需要用到画图小能手matplotlib&#xff0c;下面就演示一下常用的条形图和折线图 散点图 散点图的做大的作用是研究两个变量的相关性&#xff08;正相关&#xff0c;负相…

立体视觉标定源代码C++,简单粗暴!粗暴·······

疑点解答&#xff1a; 摄像机矩阵由内参矩阵和外参矩阵组成&#xff0c;对摄像机矩阵进行QR分解可以得到内参矩阵和外参矩阵。 内参包括焦距、主点、倾斜系数、畸变系数 &#xff08;1&#xff09; 其中&#xff0c;fx&#xff0c;fy为焦距&#xff0c;一般情况下&#xff…

11. 临时表

-- 查询5大洲国家总数 SELECT continent,COUNT(*) FROM country GROUP BY continent;-- 演示临时表 CREATE TEMPORARY TABLE tmp_table ( continent VARCHAR(20), COUNT INT );INSERT INTO tmp_table SELECT Asia AS continent,COUNT(*) FROM country WHERE continent Asia;…

MongoDB负载信息一目了然 阿里云HDM重磅发布MongoDB监控和诊断功

2019独角兽企业重金招聘Python工程师标准>>> 混合云数据库管理&#xff08;HDM&#xff09;的统一监控、告警、诊断功能新增了对MongoDB的支持。 通过直观的方式将MongoDB多个维度的负载信息统一整合&#xff0c;不仅可以清晰的查看实时负载信息&#xff0c;也可以方…

在iview的Table中添加Select(render)

首先对Render进行分析&#xff0c;在iview官方的文档中&#xff0c;找到了table插入Button的例子&#xff1a; [javascript] view plaincopy { title: Action, key: action, width: 150, align: center, render: (h, params) > { return h(div, [ h(Butt…

JavaScript中call和apply方法

1 /*2 在js中 call和apply常用于绑定作用域3 */4 //1 简单的绑定5 function sum(a,b){6 return ab;7 }8 //将sum的功能绑定给test2来执行9 function test2(a,b){ 10 return sum.call(this,a,b); 11 } 12 // call 和apply的区别是 apply接收数组作为参数…

工业机械人运动学正逆解,简单粗暴!!!!!!

ur机械臂是六自由度机械臂&#xff0c;由D-H参数法确定它的运动学模型&#xff0c;连杆坐标系的建立如上图所示。 转动关节θi是关节变量&#xff0c;连杆偏移di是常数。 关节编号 α&#xff08;绕x轴&#xff09; a&#xff08;沿x轴&#xff09; θ&#xff08;绕z轴&am…

python opencv立体测距 立体匹配BM算法

立体标定应用标定数据转换成深度图标定 在开始之前&#xff0c;需要准备的当然是两个摄相头&#xff0c;根据你的需求将两个摄像头进行相对位置的固定&#xff0c;我是按平行来进行固定的&#xff08;如果为了追求两个双目图像更高的生命度&#xff0c;也可以将其按一定钝角固…

对于python 作用域新的理解

今天看Python习题&#xff0c;看到如下题目 def num():return [lambda x: i*x for i in range(4)] print([m(2) for m in num()])  # 求输出结果是什么 我看了半天才明白这应该是一个列表生成式&#xff0c;列表中的元素为四个匿名函数&#xff0c;我本以为每个匿名函数应该是…

Vue基础学习(一)------内部指令

一.v-if v-else v-show 指令 1.v-if v-if:是vue 的一个内部指令&#xff0c;指令用在我们的html中,用来判断是否加载html的DOM 现在举个栗子&#xff0c;判断用户的登录操作&#xff0c;用isLogin作为一个判断字段&#xff0c;登录成功&#xff0c;就显示用户的名称 代码&…

【bzoj3555】[Ctsc2014]企鹅QQ 简单哈希

传送门 题目分析 题意即求有多少对字符串只相差一个字符&#xff0c;枚举删除每个字符后的哈希&#xff0c; 看有多少相等即可。 比如有如下字符串&#xff1a;$Sd123$&#xff0c;其中S部分的哈希值为H&#xff0c;删除的是d&#xff0c;则原字符串的哈希值为$$(((H * T d) *…

StereoRectify()函数定义及用法畸变矫正与立体校正

畸变矫正是上一篇博文的遗留问题&#xff0c;当畸变系数和内外参数矩阵标定完成后&#xff0c;就应该进行畸变的矫正&#xff0c;以达到消除畸变的目的&#xff0c;此其一。 在该系列第一部分的博文中介绍的立体成像原理中提到&#xff0c;要通过两幅图像估计物点的深度信息&a…

死磕 java集合之TreeMap源码分析(三)- 内含红黑树分析全过程

2019独角兽企业重金招聘Python工程师标准>>> 欢迎关注我的公众号“彤哥读源码”&#xff0c;查看更多源码系列文章, 与彤哥一起畅游源码的海洋。 删除元素 删除元素本身比较简单&#xff0c;就是采用二叉树的删除规则。 &#xff08;1&#xff09;如果删除的位置有两…

Linux:进程实例信息(/proc)

https://blog.csdn.net/test1280/article/details/73632333 Linux:进程实例信息&#xff08;/proc&#xff09; 问几个问题&#xff1a; 1.怎么知道一个进程对应哪个可执行文件&#xff1f; 2.怎么知道一个进程的资源限制&#xff1f; 3.怎么知道一个进程所处的环境&#xff1f…

四元素理解

旋转变换_四元数 2017年03月29日 11:59:38 csxiaoshui 阅读数&#xff1a;5686 1.简介 四元数是另一种描述三维旋转的方式&#xff0c;四元数使用4个分量来描述旋转&#xff0c;四元数的描述方式如下&#xff1a; qsxiyjzk,(s,x,y,z∈ℝ&#xff09;i2j2k2ijk−1 四元数的由…

31、SAM文件中flag含义解释工具--转载

转载&#xff1a;http://www.cnblogs.com/nkwy2012/p/6362996.html SAM是Sequence Alignment/Map 的缩写。像bwa等软件序列比对结果都会输出这样的文件。samtools网站上有专门的文档介绍SAM文件。具体地址&#xff1a;http://samtools.sourceforge.net/SAM1.pdf很多人困惑SAM文…