浅谈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安装与使用redis的方法
Apr 19 Python
python导入时小括号大作用
Jan 10 Python
django 创建过滤器的实例详解
Aug 14 Python
python面向对象法实现图书管理系统
Apr 19 Python
使用Python创建简单的HTTP服务器的方法步骤
Apr 26 Python
PyTorch搭建一维线性回归模型(二)
May 22 Python
django框架事务处理小结【ORM 事务及raw sql,customize sql 事务处理】
Jun 27 Python
python wxpython 实现界面跳转功能
Dec 17 Python
python打印n位数“水仙花数”(实例代码)
Dec 25 Python
详解Pycharm出现out of memory的终极解决方法
Mar 03 Python
Spring @Enable模块驱动原理及使用实例
Jun 23 Python
Python自动化之UnitTest框架实战记录
Sep 08 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;mysql(五)
2006/10/09 PHP
PHP clearstatcache()函数详解
2010/03/02 PHP
php检测useragent版本示例
2014/03/24 PHP
php提示Warning:mysql_fetch_array() expects的解决方法
2014/12/16 PHP
PHP模拟post提交数据方法汇总
2016/02/16 PHP
Yii基于CActiveForm的Ajax数据验证用法示例
2016/07/14 PHP
javascript英文日期(有时间)选择器
2007/05/02 Javascript
Javascript调用C#代码
2011/01/17 Javascript
jQuery学习笔记之2个小技巧
2015/01/19 Javascript
Node.js事件循环(Event Loop)和线程池详解
2015/01/28 Javascript
javascript结合fileReader 实现上传图片
2015/01/30 Javascript
jQuery常用的一些技巧汇总
2016/03/26 Javascript
详解Vue组件实现tips的总结
2017/11/01 Javascript
解决淘宝cnpm 安装后cnpm不是内部或外部命令的问题
2018/05/17 Javascript
vue实现分页栏效果
2019/06/28 Javascript
[01:29]2014DOTA2展望TI 剑指西雅图DK战队专访
2014/06/30 DOTA
Python使用chardet判断字符编码
2015/05/09 Python
Python手机号码归属地查询代码
2016/05/04 Python
Python 编码Basic Auth使用方法简单实例
2017/05/25 Python
python负载均衡的简单实现方法
2018/02/04 Python
python3使用SMTP发送简单文本邮件
2018/06/19 Python
python实现人脸签到系统
2020/04/13 Python
Python发送邮件封装实现过程详解
2020/05/09 Python
一款利用html5和css3动画排列人物头像的实例演示
2014/12/05 HTML / CSS
TripAdvisor斯洛伐克:阅读评论、比较价格和酒店预订
2018/04/25 全球购物
香港彩色隐形眼镜在线商店:Stunninglens(全球免费送货)
2019/05/10 全球购物
C#如何允许一个类被继承但是避免这个类的方法被重载?
2015/02/24 面试题
班级活动策划书
2014/02/06 职场文书
大家访活动实施方案
2014/03/10 职场文书
家长对老师的感言
2014/03/11 职场文书
《北大荒的秋天》教学反思
2014/04/14 职场文书
乡镇领导班子四风整顿行动工作汇报
2014/10/25 职场文书
保护校园环境倡议书
2015/04/28 职场文书
行政处罚告知书
2015/07/01 职场文书
MYSQL数据库使用UTF-8中文编码乱码的解决办法
2021/05/26 MySQL
python 使用tkinter与messagebox写界面和弹窗
2022/03/20 Python