浅谈python抛出异常、自定义异常, 传递异常


Posted in Python onJune 20, 2016

一. 抛出异常

Python用异常对象(exception object)表示异常情况,遇到错误后,会引发异常。如果异常对象并未被处理或捕捉,程序就会用所谓的回溯(Traceback,一种错误信息)终止执行。

raise 语句

Python中的raise 关键字用于引发一个异常,基本上和C#和Java中的throw关键字相同,如下所示:

import traceback

def throw_error():
  raise Exception("抛出一个异常")#异常被抛出,print函数无法执行
  print("飞天猪")
  
throw_error()

#运行结果:

'''Traceback (most recent call last):
 File "C:\Users\Administrator\Desktop\systray.py", line 7, in <module>
  throw_error()
 File "C:\Users\Administrator\Desktop\systray.py", line 4, in throw_error
  raise Exception("抛出一个异常")#异常被抛出,print函数无法执行
Exception: 抛出一个异常'''

raise关键字后面是抛出是一个通用的异常类型(Exception),一般来说抛出的异常越详细越好

二.传递异常:

捕捉到了异常,但是又想重新引发它(传递异常),可以使用不带参数的raise语句即可:

class MufCalc(object):
  m = False
  def calc(self,exp):
    try:
      return eval(exp)
    except ZeroDivisionError:
      if self.m:
        print("cool")
      else:
        raise

app = MufCalc()
app.calc(2/0)

三.自定义异常类型

Python中也可以自定义自己的特殊类型的异常,只需要要从Exception类继承(直接或间接)即可:

class MyError(Exception):
  pass
Python 相关文章推荐
Python群发邮件实例代码
Jan 03 Python
详解在Python程序中使用Cookie的教程
Apr 30 Python
Python制作钉钉加密/解密工具
Dec 07 Python
python 返回列表中某个值的索引方法
Nov 07 Python
对Python中class和instance以及self的用法详解
Jun 26 Python
关于PyTorch源码解读之torchvision.models
Aug 17 Python
python标识符命名规范原理解析
Jan 10 Python
解决ROC曲线画出来只有一个点的问题
Feb 28 Python
python中requests模拟登录的三种方式(携带cookie/session进行请求网站)
Nov 17 Python
python 实现ping测试延迟的两种方法
Dec 10 Python
python3读取文件指定行的三种方法
May 24 Python
用PYTHON去计算88键钢琴的琴键频率和音高
Apr 10 Python
python3 与python2 异常处理的区别与联系
Jun 19 #Python
浅谈Python的异常处理
Jun 19 #Python
qpython3 读取安卓lastpass Cookies
Jun 19 #Python
python3实现读取chrome浏览器cookie
Jun 19 #Python
python3 实现的人人影视网站自动签到
Jun 19 #Python
python3实现暴力穷举博客园密码
Jun 19 #Python
在阿里云服务器上配置CentOS+Nginx+Python+Flask环境
Jun 18 #Python
You might like
基于OpenCV的PHP图像人脸识别技术
2009/10/11 PHP
php Rename 更改文件、文件夹名称
2011/05/24 PHP
5种PHP创建数组的实例代码分享
2014/01/17 PHP
[企业公众号]升级到[企业微信]之后发送消息失败的解决方法
2017/06/30 PHP
解决PhpStorm64不能启动的问题
2020/06/20 PHP
Gird事件机制初级读本
2007/03/10 Javascript
event对象的方法 兼容多浏览器
2009/06/27 Javascript
JavaScript打字小游戏代码
2011/12/26 Javascript
jquery中animate动画积累的解决方法
2013/10/05 Javascript
javascript中的=等号个数问题两个跟三个有什么区别
2013/10/23 Javascript
js实现点小图看大图效果的思路及示例代码
2013/10/28 Javascript
js实现在同一窗口浏览图片
2014/09/17 Javascript
jquery滚动特效集锦
2015/06/03 Javascript
jQuery中 delegate使用的问题
2015/07/03 Javascript
jQuery遮罩层实现方法实例详解(附遮罩层插件)
2015/12/08 Javascript
nodejs微信公众号支付开发
2016/09/19 NodeJs
Vue.js 递归组件实现树形菜单(实例分享)
2016/12/21 Javascript
实例解析js中try、catch、finally的执行规则
2017/02/24 Javascript
利用ES6的Promise.all实现至少请求多长时间的实例
2017/08/28 Javascript
JavaScript偏函数与柯里化实例详解
2019/03/27 Javascript
jQuery实现简单QQ聊天框
2020/08/27 jQuery
JS跨浏览器解析XML应用过程详解
2020/10/16 Javascript
跟老齐学Python之不要红头文件(2)
2014/09/28 Python
Python实现ssh批量登录并执行命令
2016/10/25 Python
Python 编码规范(Google Python Style Guide)
2018/05/05 Python
python实现单链表中删除倒数第K个节点的方法
2018/09/28 Python
对Python强大的可变参数传递机制详解
2019/06/13 Python
使用python将最新的测试报告以附件的形式发到指定邮箱
2019/09/20 Python
python二进制读写及特殊码同步实现详解
2019/10/11 Python
python Matplotlib模块的使用
2020/09/16 Python
纽约通行卡:The New York Pass(免费游览纽约90多个景点)
2017/07/29 全球购物
如果重写了对象的equals()方法,需要考虑什么
2014/11/02 面试题
《在大海中永生》教学反思
2014/02/24 职场文书
鲁迅故里导游词
2015/02/05 职场文书
同乡会致辞
2015/07/30 职场文书
PHP基本语法
2021/03/31 PHP