浅谈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随机读取文件实现实例
May 25 Python
python实现媒体播放器功能
Feb 11 Python
实例讲解Python爬取网页数据
Jul 08 Python
用Python编写一个高效的端口扫描器的方法
Dec 20 Python
Python自定义一个类实现字典dict功能的方法
Jan 19 Python
Flask框架实现的前端RSA加密与后端Python解密功能详解
Aug 13 Python
opencv3/C++实现视频读取、视频写入
Dec 11 Python
Python3和pyqt5实现控件数据动态显示方式
Dec 13 Python
python中with用法讲解
Feb 07 Python
Python运行提示缺少模块问题解决方案
Apr 02 Python
pyMySQL SQL语句传参问题,单个参数或多个参数说明
Jun 06 Python
python3环境搭建过程(利用Anaconda+pycharm)完整版
Aug 19 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.MVC的模板标签系统(四)
2006/09/05 PHP
初次接触php抽象工厂模式(Elgg)
2010/03/21 PHP
php中的常用魔术方法总结
2013/08/02 PHP
PHP类的特性实例分析
2016/09/28 PHP
ZendFramework2连接数据库操作实例
2017/04/18 PHP
PHP文件系统管理(实例讲解)
2017/09/19 PHP
jQuery通过点击行来删除HTML表格行的实现示例
2014/09/10 Javascript
jQuery 处理页面的事件详解
2015/01/20 Javascript
JavaScript字符串删除重复字符的方法
2015/12/25 Javascript
jQuery+Pdo编写login登陆界面
2016/08/01 Javascript
AngularJS 中的Promise --- $q服务详解
2016/09/14 Javascript
JS实现获取图片大小和预览的方法完整实例【兼容IE和其它浏览器】
2017/04/24 Javascript
vue实现登录后页面跳转到之前页面
2018/01/07 Javascript
浅谈在node.js进入文件目录的问题
2018/05/13 Javascript
JavaScript对象的特性与实践应用深入详解
2018/12/30 Javascript
详解Vue中的Props与Data细微差别
2020/03/02 Javascript
JS co 函数库的含义和用法实例总结
2020/04/08 Javascript
javascript实现文字跑马灯效果
2020/06/18 Javascript
[40:10]2015国际邀请赛全明星表演赛
2015/08/07 DOTA
python的re模块应用实例
2014/09/26 Python
Python Web静态服务器非堵塞模式实现方法示例
2019/11/21 Python
Python实现ATM系统
2020/02/17 Python
深入浅析Python 函数注解与匿名函数
2020/02/24 Python
Python opencv相机标定实现原理及步骤详解
2020/04/09 Python
使用keras时input_shape的维度表示问题说明
2020/06/29 Python
python dict如何定义
2020/09/02 Python
python 三种方法提取pdf中的图片
2021/02/07 Python
HTML5+CSS3 实现灵动的动画 TAB 切换效果(DEMO)
2017/09/15 HTML / CSS
护士自我鉴定范文
2013/10/06 职场文书
销售部主管岗位职责
2013/12/18 职场文书
纪念建党演讲稿范文
2014/01/13 职场文书
我们的节日清明节活动方案
2014/03/05 职场文书
竞选学习委员演讲稿
2014/04/28 职场文书
环保倡议书400字
2014/05/15 职场文书
大客户经理岗位职责
2015/04/09 职场文书
进阶篇之linux环境下安装MySQL数据库
2022/04/09 MySQL