浅谈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实现从url中提取域名的几种方法
Sep 26 Python
Python中类的定义、继承及使用对象实例详解
Apr 30 Python
python实现一次创建多级目录的方法
May 15 Python
Python 中 Meta Classes详解
Feb 13 Python
python的dataframe转换为多维矩阵的方法
Apr 11 Python
python实现黑客字幕雨效果
Jun 21 Python
pandas重新生成索引的方法
Nov 06 Python
django框架自定义模板标签(template tag)操作示例
Jun 24 Python
Tensorflow实现神经网络拟合线性回归
Jul 19 Python
python实现高斯(Gauss)迭代法的例子
Nov 20 Python
Python属性和内建属性实例解析
Jan 14 Python
Python中Pyspider爬虫框架的基本使用详解
Jan 27 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中如何判断AJAX提交的数据
2012/02/05 PHP
php连接mssql的一些相关经验及注意事项
2013/02/05 PHP
php笔记之:php函数range() round()和list()的使用说明
2013/04/26 PHP
PHP session会话操作技巧小结
2016/09/27 PHP
php+mysql实现简单登录注册修改密码网页
2016/11/30 PHP
超级退弹代码
2008/07/07 Javascript
jquery实现文本框鼠标右击无效以及不能输入的代码
2010/11/05 Javascript
JQuery调webservice实现邮箱验证(检测是否可用)
2013/05/21 Javascript
Javascript中3种实现继承的方法和代码实例
2014/08/12 Javascript
AngularJS自动表单验证
2016/02/01 Javascript
探索Javascript中this的奥秘
2016/12/11 Javascript
js实现图片轮播效果学习笔记
2017/07/26 Javascript
webpack项目调试以及独立打包配置文件的方法
2018/02/28 Javascript
在vue中实现点击选择框阻止弹出层消失的方法
2018/09/15 Javascript
关于自定义Egg.js的请求级别日志详解
2018/12/12 Javascript
[04:36]DOTA2国际邀请赛 ti3精彩集锦
2013/08/19 DOTA
[45:50]完美世界DOTA2联赛PWL S3 CPG vs Forest 第二场 12.16
2020/12/17 DOTA
从零学python系列之浅谈pickle模块封装和拆封数据对象的方法
2014/05/23 Python
python相似模块用例
2016/03/04 Python
基于Django contrib Comments 评论模块(详解)
2017/12/08 Python
Python使用matplotlib模块绘制图像并设置标题与坐标轴等信息示例
2018/05/04 Python
在python中安装basemap的教程
2018/09/20 Python
python实现多层感知器MLP(基于双月数据集)
2019/01/18 Python
详解Django+uwsgi+Nginx上线最佳实战
2019/03/14 Python
通过PHP与Python代码对比的语法差异详解
2019/07/10 Python
python 制作本地应用搜索工具
2021/02/27 Python
一款html5 canvas实现的图片玻璃碎片特效
2014/09/11 HTML / CSS
HTML5 DeviceOrientation实现手机网站摇一摇功能代码实例
2015/04/24 HTML / CSS
Lookfantastic西班牙官网:英国知名美妆购物网站
2018/06/13 全球购物
会议接待欢迎词
2014/01/12 职场文书
工厂实习感言
2014/01/14 职场文书
火锅店的活动方案
2014/08/15 职场文书
工作收入证明范本
2015/06/12 职场文书
交通事故协议书范本
2016/03/19 职场文书
施工安全协议书
2016/03/22 职场文书
Python使用openpyxl批量处理数据
2021/06/23 Python