浅谈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 13 Python
对Python 两大环境管理神器 pyenv 和 virtualenv详解
Dec 31 Python
Python 隐藏输入密码时屏幕回显的实例
Feb 19 Python
python实现一行输入多个值和一行输出多个值的例子
Jul 16 Python
PyQtGraph在pyqt中的应用及安装过程
Aug 04 Python
对Django中内置的User模型实例详解
Aug 16 Python
wxPython电子表格功能wx.grid实例教程
Nov 19 Python
使用Python生成200个激活码的实现方法
Nov 22 Python
Python Selenium 设置元素等待的三种方式
Mar 18 Python
使用Dajngo 通过代码添加xadmin用户和权限(组)
Jul 03 Python
Python使用shutil模块实现文件拷贝
Jul 31 Python
Python中生成ndarray实例讲解
Feb 22 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
第五节 克隆 [5]
2006/10/09 PHP
Win2003服务器安全加固设置--进一步提高服务器安全性
2007/05/23 PHP
php提交表单发送邮件的方法
2015/03/20 PHP
Laravel 5框架学习之数据库迁移(Migrations)
2015/04/08 PHP
基于thinkPHP实现的微信自定义分享功能示例
2016/09/23 PHP
php中各种定义变量的方法小结
2017/10/18 PHP
学习YUI.Ext 第二天
2007/03/10 Javascript
js树形控件脚本代码
2008/07/24 Javascript
Javascript学习笔记1 数据类型
2010/01/11 Javascript
JavaScript数值数组排序示例分享
2014/05/27 Javascript
JavaScript indexOf方法入门实例(计算指定字符在字符串中首次出现的位置)
2014/10/17 Javascript
jquery实现拖动效果(代码分享)
2017/01/25 Javascript
javascript实现数据双向绑定的三种方式小结
2017/03/09 Javascript
BootstrapValidator实现注册校验和登录错误提示效果
2017/03/10 Javascript
JS实现上传图片实时预览功能
2017/05/22 Javascript
Vue.js单向绑定和双向绑定实例分析
2018/08/14 Javascript
微信头像地址失效踩坑记附带解决方案
2019/09/23 Javascript
Vue.js组件通信之自定义事件详解
2019/10/19 Javascript
如何在Vue中抽离接口配置文件
2019/10/31 Javascript
微信小程序getLocation 需要在app.json中声明permission字段
2020/03/03 Javascript
vue实现简单全选和反选功能
2020/09/15 Javascript
使用Python多线程爬虫爬取电影天堂资源
2016/09/23 Python
python中的字典操作及字典函数
2018/01/03 Python
Python命令行解析模块详解
2018/02/01 Python
pthon贪吃蛇游戏详细代码
2019/01/27 Python
基于Python获取城市近7天天气预报
2019/11/26 Python
新加坡网上花店:FlowerAdvisor新加坡
2018/10/05 全球购物
合作经营协议书
2014/04/17 职场文书
艺术教育实施方案
2014/05/03 职场文书
2014领导班子专题民主生活会对照检查材料思想汇报
2014/09/23 职场文书
上班迟到检讨书300字
2014/10/18 职场文书
2014年干部培训工作总结
2014/12/17 职场文书
五好文明家庭事迹材料
2014/12/20 职场文书
Redis IP地址的绑定的实现
2021/05/08 Redis
《异世界四重奏》剧场版6月10日上映 PV视觉图原创角色发表
2022/03/20 日漫
Android 中的类文件和类加载器详情
2022/06/05 Java/Android