浅谈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开发的小球完全弹性碰撞游戏代码
Oct 15 Python
python自动化工具日志查询分析脚本代码实现
Nov 26 Python
Python中optparse模块使用浅析
Jan 01 Python
Python实现微信公众平台自定义菜单实例
Mar 20 Python
Python输出由1,2,3,4组成的互不相同且无重复的三位数
Feb 01 Python
Django中更改默认数据库为mysql的方法示例
Dec 05 Python
详解python的四种内置数据结构
Mar 19 Python
简单分析python的类变量、实例变量
Aug 23 Python
Python3 中作为一等对象的函数解析
Dec 11 Python
Python爬取腾讯视频评论的思路详解
Dec 19 Python
PyCharm刷新项目(文件)目录的实现
Feb 14 Python
keras小技巧——获取某一个网络层的输出方式
May 23 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
用PHPdig打造属于你自己的Google[图文教程]
2007/02/14 PHP
php实现的在线人员函数库
2008/04/09 PHP
sourcesafe管理phpproj文件的补充说明(downmoon)
2009/04/11 PHP
PHP删除非空目录的函数代码小结
2013/02/28 PHP
PHP学习笔记(一) 简单了解PHP
2014/08/04 PHP
详谈phpAdmin修改密码后拒绝访问的问题
2017/04/03 PHP
js onpropertychange输入框 事件获取属性
2009/03/26 Javascript
客户端js性能优化小技巧整理
2013/11/05 Javascript
jQuery Ajax异步处理Json数据详解
2013/11/05 Javascript
一张Web前端的思维导图分享
2015/07/03 Javascript
AngularJs Modules详解及示例代码
2016/09/01 Javascript
Kendo Grid editing 自定义验证报错提示的解决方法
2016/11/18 Javascript
对称加密与非对称加密优缺点详解
2017/02/06 Javascript
canvas时钟效果
2017/02/16 Javascript
bootstrap实现动态进度条效果
2017/03/08 Javascript
Vue使用vue-cli创建项目
2017/09/01 Javascript
一步步教你利用Canvas对图片进行处理
2017/09/19 Javascript
mongoose设置unique不生效问题的解决及如何移除unique的限制
2017/11/07 Javascript
js判断节假日实例代码
2017/12/27 Javascript
Vue 监听列表item渲染事件方法
2018/09/06 Javascript
原生JS实现拖拽功能
2020/12/16 Javascript
[03:02]安得倚天剑,跨海斩长鲸——中国军团出征DOTA2国际邀请赛
2018/08/14 DOTA
[55:44]完美世界DOTA2联赛决赛 FTD vs Phoenix 第二场 11.08
2020/11/11 DOTA
Python聚类算法之DBSACN实例分析
2015/11/20 Python
tensorflow学习笔记之mnist的卷积神经网络实例
2018/04/15 Python
python中 _、__、__xx__()区别及使用场景
2020/06/30 Python
幼儿园门卫岗位职责
2014/02/14 职场文书
上课打牌的检讨书
2014/02/15 职场文书
干部对照检查材料范文
2014/08/26 职场文书
党员国庆节演讲稿范文2014
2014/09/21 职场文书
教师听课评语大全
2014/12/31 职场文书
2016年党员创先争优公开承诺书
2016/03/25 职场文书
2019大学生预备党员转正思想汇报
2019/06/21 职场文书
导游词之吉林花园山
2019/10/17 职场文书
Java Kafka 消费积压监控的示例代码
2021/07/01 Java/Android
一次SQL查询优化原理分析(900W+数据从17s到300ms)
2022/06/10 SQL Server