浅谈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 21 Python
Python中__init__和__new__的区别详解
Jul 09 Python
Python实现希尔排序算法的原理与用法实例分析
Nov 23 Python
django上传图片并生成缩略图方法示例
Dec 11 Python
Python3实现发送QQ邮件功能(附件)
Dec 23 Python
Python解决走迷宫问题算法示例
Jul 27 Python
Python读取txt内容写入xls格式excel中的方法
Oct 11 Python
python实现给微信指定好友定时发送消息
Apr 29 Python
用uWSGI和Nginx部署Flask项目的方法示例
May 05 Python
Python小程序 控制鼠标循环点击代码实例
Oct 08 Python
Python面向对象编程基础实例分析
Jan 17 Python
pycharm 多行批量缩进和反向缩进快捷键介绍
Jan 15 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
隐藏X-Space个人空间下方版权方法隐藏X-Space个人空间标题隐藏X-Space个人空间管理版权方法
2007/02/22 PHP
一个php导出oracle库的php代码
2009/04/20 PHP
PHP中的日期加减方法示例
2014/08/21 PHP
Symfony2开发之控制器用法实例分析
2016/02/05 PHP
PHP使用Memcache时模拟命名空间及缓存失效问题的解决
2016/02/27 PHP
PHP+MySql+jQuery实现的&quot;顶&quot;和&quot;踩&quot;投票功能
2016/05/21 PHP
ThinkPHP5.0框架验证码功能实现方法【基于第三方扩展包】
2019/03/11 PHP
jquery 跨域访问问题解决方法(笔记)
2011/06/08 Javascript
jquery绑定事件不生效的解决方法
2014/02/11 Javascript
js 获取时间间隔实现代码
2014/05/12 Javascript
基于javascript、ajax、memcache和PHP实现的简易在线聊天室
2015/02/03 Javascript
浅析JavaScriptSerializer类的序列化与反序列化
2016/11/22 Javascript
Vue.js在数组中插入重复数据的实现代码
2017/11/17 Javascript
JavaScript DOM元素常见操作详解【添加、删除、修改等】
2018/05/09 Javascript
Vuejs+vue-router打包+Nginx配置的实例
2018/09/20 Javascript
VUE实现强制渲染,强制更新
2019/10/29 Javascript
Vue路由 重定向和别名的区别说明
2020/09/09 Javascript
jQuery实现鼠标拖拽登录框移动效果
2020/09/13 jQuery
vue绑定class的三种方法
2020/12/24 Vue.js
[03:20]次级联赛厮杀超职业 现超级兵对拆世纪大战
2014/10/30 DOTA
Python中zfill()方法的使用教程
2015/05/20 Python
详解python while 函数及while和for的区别
2018/09/07 Python
python-docx文件定位读取过程(尝试替换)
2020/02/13 Python
pygame实现弹球游戏
2020/04/14 Python
Python下划线5种含义代码实例解析
2020/07/10 Python
Dyson加拿大官方网站:购买戴森吸尘器,风扇,冷热器及配件
2016/10/26 全球购物
英国团购网站:Groupon英国
2017/11/28 全球购物
德国高尔夫商店:Golfshop.de
2019/06/22 全球购物
高职助产应届生自荐信
2013/09/24 职场文书
幼儿园教师的考核评语
2014/04/18 职场文书
《欢乐的泼水节》教学反思
2014/04/22 职场文书
幼儿教师演讲稿
2014/05/06 职场文书
小学少先队辅导员述职报告
2015/01/10 职场文书
服装店员工管理制度
2015/08/07 职场文书
索尼ICF-36收音机评测
2022/04/30 无线电
JavaScript parseInt0.0000005打印5原理解析
2022/07/23 Javascript