浅谈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实现的一个p2p文件传输实例
Jun 04 Python
Linux 发邮件磁盘空间监控(python)
Apr 23 Python
Python数据结构与算法之图的基本实现及迭代器实例详解
Dec 12 Python
Python网络编程基于多线程实现多用户全双工聊天功能示例
Apr 10 Python
python3.6使用pickle序列化class的方法
Oct 22 Python
python遍历小写英文字母的方法
Jan 02 Python
实例详解Python装饰器与闭包
Jul 29 Python
pytorch索引查找 index_select的例子
Aug 18 Python
Keras实现支持masking的Flatten层代码
Jun 16 Python
Python 实现 T00ls 自动签到脚本代码(邮件+钉钉通知)
Jul 06 Python
python自动化测试三部曲之request+django实现接口测试
Oct 07 Python
详解Python+Selenium+ChromeDriver的配置和问题解决
Jan 19 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
珊瑚虫IP库浅析
2007/02/15 PHP
建站常用13种PHP开源CMS比较
2009/08/23 PHP
PHP简单实现HTTP和HTTPS跨域共享session解决办法
2015/05/27 PHP
apycom出品的jQuery精美菜单破解方法
2011/02/18 Javascript
jquery插件制作 表单验证实现代码
2012/08/17 Javascript
用js来获取上传的文件名纯粹是为了美化而用
2013/10/23 Javascript
js 剪切板应用clipboardData详细解析
2013/12/17 Javascript
jquery实现弹出层遮罩效果的简单实例
2014/03/03 Javascript
在Google 地图上实现做的标记相连接
2015/01/05 Javascript
javascript中replace使用方法总结
2017/03/01 Javascript
Vue.js实战之组件之间的数据传递
2017/04/01 Javascript
Nodejs+angularjs结合multiparty实现多图片上传的示例代码
2017/09/29 NodeJs
JavaScript多线程运行库Nexus.js详解
2017/12/22 Javascript
在Vue中使用Compass的方法
2018/03/02 Javascript
jQuery中的类名选择器(.class)用法简单示例
2018/05/14 jQuery
axios如何取消重复无用的请求详解
2019/12/15 Javascript
JavaScript实现刮刮乐效果
2020/11/01 Javascript
Vue3配置axios跨域实现过程解析
2020/11/25 Vue.js
python 2.6.6升级到python 2.7.x版本的方法
2016/10/09 Python
python读取csv文件并把文件放入一个list中的实例讲解
2018/04/27 Python
python中pytest收集用例规则与运行指定用例详解
2019/06/27 Python
Python中正反斜杠(‘/’和‘\’)的意义与用法
2019/08/12 Python
实例教程 一款纯css3实现的数字统计游戏
2014/11/10 HTML / CSS
HashMap和Hashtable的区别
2013/05/18 面试题
临床医学专业学生的自我评价分享
2013/11/21 职场文书
学校食堂采购员岗位职责
2013/12/05 职场文书
英文简历自荐信范文
2013/12/11 职场文书
毕业生个人求职信范文分享
2014/01/05 职场文书
DIY手工制作经营店创业计划书
2014/02/01 职场文书
美术教师自我鉴定
2014/02/12 职场文书
yy司仪主持词
2014/03/22 职场文书
公司寄语大全
2014/04/10 职场文书
关于倡议书的范文
2015/04/29 职场文书
授权协议书范本(3篇)
2019/10/15 职场文书
CSS中Single Div 绘图技巧的实现
2021/06/18 HTML / CSS
MySQL 原理优化之Group By的优化技巧
2022/08/14 MySQL