浅谈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 13 Python
从零学python系列之新版本导入httplib模块报ImportError解决方案
May 23 Python
Python中实现两个字典(dict)合并的方法
Sep 23 Python
Django框架中处理URLconf中特定的URL的方法
Jul 20 Python
浅谈Python中chr、unichr、ord字符函数之间的对比
Jun 16 Python
Python实现ssh批量登录并执行命令
Oct 25 Python
Python中pip更新和三方插件安装说明
Jul 08 Python
python执行scp命令拷贝文件及文件夹到远程主机的目录方法
Jul 08 Python
pytorch 常用线性函数详解
Jan 15 Python
部署Django到阿里云服务器教程示例
Jun 03 Python
python 贪心算法的实现
Sep 18 Python
如何利用python读取micaps文件详解
Oct 18 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&amp;&amp;mysql)六
2006/10/09 PHP
PHP统计目录下的文件总数及代码行数(去除注释及空行)
2011/01/17 PHP
11个PHP 分页脚本推荐
2011/08/15 PHP
解决nginx不支持thinkphp中pathinfo的问题
2015/07/21 PHP
PHP 将dataurl转成图片image方法总结
2016/10/14 PHP
在Laravel5中正确设置文件权限的方法
2019/05/22 PHP
javascript 支持ie和firefox杰奇翻页函数
2008/07/22 Javascript
js可突破windows弹退效果代码
2008/08/09 Javascript
学习ExtJS fit布局使用说明
2009/10/08 Javascript
jquery连缀语法如何实现
2012/11/29 Javascript
使用jQuery中的when实现多个AJAX请求对应单个回调的例子分享
2014/04/23 Javascript
JS获取单击按钮单元格所在行的信息
2014/06/17 Javascript
JavaScript事件委托技术实例分析
2015/02/06 Javascript
jQuery遍历页面所有CheckBox查看是否被选中的方法
2015/04/14 Javascript
解决URL地址中的中文乱码问题的办法
2017/02/10 Javascript
JS中跳出循环的示例代码
2017/09/14 Javascript
详解使用vue-admin-template的优化历程
2018/05/20 Javascript
深入浅析javascript函数中with
2018/10/28 Javascript
使用electron制作满屏心特效的示例代码
2018/11/27 Javascript
Node.js之readline模块的使用详解
2019/03/25 Javascript
vue2 v-model/v-text 中使用过滤器的方法示例
2019/05/09 Javascript
nodejs实现UDP组播示例方法
2019/11/04 NodeJs
详解Python中映射类型的内建函数和工厂函数
2015/08/19 Python
Python实现Logger打印功能的方法详解
2017/09/01 Python
详解python数据结构和算法
2019/04/18 Python
python ChainMap 合并字典的实现步骤
2019/06/11 Python
python运用sklearn实现KNN分类算法
2019/10/16 Python
美国中西部家用医疗设备商店:Med Mart(轮椅、踏板车、升降机等)
2019/04/26 全球购物
美国基督教约会网站:ChristianCafe.com
2020/02/04 全球购物
2013年学期结束动员演讲稿
2014/01/07 职场文书
安卓程序员求职信
2014/02/28 职场文书
城管综合整治方案
2014/05/01 职场文书
应届毕业生自荐信
2014/05/28 职场文书
2015年业务员工作总结范文
2015/04/07 职场文书
成功的商业计划书这样写才最靠谱
2019/07/12 职场文书
javascript进阶篇深拷贝实现的四种方式
2022/07/07 Javascript