浅谈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交换变量
Sep 06 Python
win7安装python生成随机数代码分享
Dec 27 Python
在树莓派2或树莓派B+上安装Python和OpenCV的教程
Mar 30 Python
Python实现比较两个列表(list)范围
Jun 12 Python
详解Python爬虫的基本写法
Jan 08 Python
Python中的字符串查找操作方法总结
Jun 27 Python
Python实现的HMacMD5加密算法示例
Apr 03 Python
PyQt5每天必学之滑块控件QSlider
Apr 20 Python
Python3中正则模块re.compile、re.match及re.search函数用法详解
Jun 11 Python
Python实现定制自动化业务流量报表周报功能【XlsxWriter模块】
Mar 11 Python
Python中的asyncio代码详解
Jun 10 Python
Python递归函数 二分查找算法实现解析
Aug 12 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
星际原理概述
2020/03/04 星际争霸
15个小时----从修改程序到自己些程序
2006/10/09 PHP
采用header定义为文件然后readfile下载(隐藏下载地址)
2014/01/31 PHP
php中动态变量用法实例
2015/06/10 PHP
PHP SFTP实现上传下载功能
2017/07/26 PHP
laravel框架select2多选插件初始化默认选中项操作示例
2020/02/18 PHP
jQuery的控件及事件(输入控件及回车事件)使用示例
2013/07/25 Javascript
JS实现鼠标单击与双击事件共存
2014/03/08 Javascript
javascript页面上使用动态时间具体实现
2014/03/18 Javascript
JavaScript 匿名函数和闭包介绍
2015/04/13 Javascript
深入剖析JavaScript:Object类型
2016/05/10 Javascript
jQuery插件扩展测试实例
2016/06/21 Javascript
BootStrap无限级分类(无限极分类封装版)
2016/08/26 Javascript
利用javascript实现的三种图片放大镜效果实例(附源码)
2017/01/23 Javascript
JavaScript实现图片无缝滚动效果
2017/07/07 Javascript
Bootstrap弹出框之自定义悬停框标题、内容和样式示例代码
2017/07/11 Javascript
在vscode中统一vue编码风格的方法
2018/02/22 Javascript
element-ui表格列金额显示两位小数的方法
2018/08/24 Javascript
[01:56]无止竞 再出发——中国军团出征2017年DOTA2国际邀请赛
2017/07/05 DOTA
[01:33]PWL开团时刻DAY2-开雾与反开雾
2020/10/31 DOTA
PyQt实现界面翻转切换效果
2018/04/20 Python
django ajax json的实例代码
2018/05/29 Python
使用PyInstaller将Pygame库编写的小游戏程序打包为exe文件及出现问题解决方法
2019/09/06 Python
django xadmin 管理器常用显示设置方式
2020/03/11 Python
详解python中的异常和文件读写
2021/01/03 Python
css3教程之倾斜页面
2014/01/27 HTML / CSS
详解px单位html5响应式方案
2018/03/08 HTML / CSS
品质管理部岗位职责范文
2014/03/01 职场文书
党员承诺书怎么写
2014/05/20 职场文书
2014年学习厉行节约反对浪费思想汇报
2014/09/10 职场文书
2014年施工员工作总结
2014/11/18 职场文书
原告离婚代理词
2015/05/23 职场文书
文书工作总结(范文)
2019/07/11 职场文书
Redis做数据持久化的解决方案及底层原理
2021/07/15 Redis
Nginx location 和 proxy_pass路径配置问题小结
2021/09/04 Servers
实战 快速定位MySQL的慢SQL
2022/03/22 MySQL