浅谈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中的迭代器、生成器与列表解析用法
Mar 20 Python
用virtualenv建立多个Python独立虚拟开发环境
Jul 06 Python
python Pygame的具体使用讲解
Nov 03 Python
用tensorflow实现弹性网络回归算法
Jan 09 Python
matplotlib作图添加表格实例代码
Jan 23 Python
Python smtplib实现发送邮件功能
May 22 Python
让Django支持Sql Server作后端数据库的方法
May 29 Python
Python3.5常见内置方法参数用法实例详解
Apr 29 Python
Pandas之groupby( )用法笔记小结
Jul 23 Python
使用python制作一个解压缩软件
Nov 13 Python
python实现在多维数组中挑选符合条件的全部元素
Nov 26 Python
python collections模块的使用
Oct 16 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
透析PHP的配置文件php.ini
2006/10/09 PHP
学习php笔记 字符串处理
2010/10/19 PHP
PHP实现找出有序数组中绝对值最小的数算法分析
2017/08/07 PHP
Laravel中的chunk组块结果集处理与注意问题
2018/08/15 PHP
PHP实现获取毫秒时间戳的方法【使用microtime()函数】
2019/03/01 PHP
jQuery 中关于CSS操作部分使用说明
2007/06/10 Javascript
JavaScript DOM 学习第五章 表单简介
2010/02/19 Javascript
Extjs列表详细信息窗口新建后自动加载解决方法
2010/04/02 Javascript
JS 模态对话框和非模态对话框操作技巧汇总
2013/04/15 Javascript
js 用CreateElement动态创建标签示例
2013/11/20 Javascript
节点的插入之append()和appendTo()的用法介绍
2014/01/13 Javascript
基于javascript实现浏览器滚动条快到底部时自动加载数据
2015/11/30 Javascript
JS获取当前使用的浏览器名字以及版本号实现方法
2016/08/19 Javascript
ES6中Class类的静态方法实例小结
2017/10/28 Javascript
jquery 通过ajax请求获取后台数据显示在表格上的方法
2018/08/08 jQuery
vue 组件中使用 transition 和 transition-group实现过渡动画
2019/07/09 Javascript
JS数组方法reverse()用法实例分析
2020/01/18 Javascript
VUE中使用HTTP库Axios方法详解
2020/02/05 Javascript
基于elementUI竖向表格、和并列的案例
2020/10/26 Javascript
机器学习经典算法-logistic回归代码详解
2017/12/22 Python
浅谈django三种缓存模式的使用及注意点
2018/09/30 Python
详解Python3 基本数据类型
2019/04/19 Python
python set集合使用方法解析
2019/11/05 Python
Python利用socket模块开发简单的端口扫描工具的实现
2021/01/27 Python
移动Web—CSS为Retina屏幕替换更高质量的图片
2012/12/24 HTML / CSS
利用Bootstrap实现漂亮简洁的CSS3价格表实例源码
2017/03/02 HTML / CSS
美国鞋类购物网站:Shiekh Shoes
2016/08/21 全球购物
Desigual美国官方网站:西班牙服装品牌
2019/03/29 全球购物
Europcar比利时:租车
2019/08/26 全球购物
请用用Java代码写一个堆栈
2012/01/26 面试题
UNIX文件系统常用命令
2012/05/25 面试题
急诊科护士自我鉴定
2013/10/14 职场文书
关于运动会的稿件
2014/02/02 职场文书
汉语言文学职业规划
2014/02/14 职场文书
品牌推广策划方案
2014/05/28 职场文书
2015年先进个人自荐书
2015/03/24 职场文书