浅谈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冒泡排序算法的实现代码
Nov 21 Python
python过滤字符串中不属于指定集合中字符的类实例
Jun 30 Python
Python中Collections模块的Counter容器类使用教程
May 31 Python
python使用Pycharm创建一个Django项目
Mar 05 Python
Python将8位的图片转为24位的图片实现方法
Oct 24 Python
详解python解压压缩包的五种方法
Jul 05 Python
Python中如何将一个类方法变为多个方法
Dec 30 Python
python发qq消息轰炸虐狗好友思路详解(完整代码)
Feb 15 Python
Django 删除upload_to文件的步骤
Mar 30 Python
Python参数传递实现过程及原理详解
May 14 Python
Python如何把不同类型数据的json序列化
Apr 30 Python
python用海龟绘图写贪吃蛇游戏
Jun 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
谈一谈收音机的高放电路
2021/03/02 无线电
Ajax PHP 边学边练 之三 数据库
2009/11/26 PHP
php 截取utf-8格式的字符串实例代码
2016/10/30 PHP
php微信高级接口调用方法(自定义菜单接口、客服接口、二维码)
2016/11/28 PHP
iframe 异步加载技术及性能分析
2011/07/19 Javascript
jquery选择器-根据多个属性选择示例代码
2013/10/21 Javascript
简介JavaScript中的setHours()方法的使用
2015/06/11 Javascript
jQuery实现可展开合拢的手风琴面板菜单
2015/09/15 Javascript
Bootstrap3学习笔记(三)之表格
2016/05/20 Javascript
Vue中添加过渡效果的方法
2017/03/16 Javascript
jQuery实现的简单动态添加、删除表格功能示例
2017/09/21 jQuery
利用vscode调试编译后的js代码详解
2018/05/14 Javascript
浅谈VUE-CLI脚手架热更新太慢的原因和解决方法
2018/09/28 Javascript
vue中实现动态生成二维码的方法
2020/02/21 Javascript
Vue v-for中的 input 或 select的值发生改变时触发事件操作
2020/08/31 Javascript
原生JavaScript实现换肤
2021/02/19 Javascript
[01:16:16]DOTA2-DPC中国联赛定级赛 RNG vs Phoenix BO3第二场 1月8日
2021/03/11 DOTA
Python和JavaScript间代码转换的4个工具
2016/02/22 Python
numpy向空的二维数组中添加元素的方法
2018/11/01 Python
Python求离散序列导数的示例
2019/07/10 Python
解决pytorch GPU 计算过程中出现内存耗尽的问题
2019/08/19 Python
jupyter notebook快速入门及使用详解
2020/11/13 Python
微信html5页面调用第三方位置导航的示例
2018/03/14 HTML / CSS
通信工程毕业生求职信
2013/11/16 职场文书
网络事业创业计划书范文
2014/01/09 职场文书
报纸媒体创意广告词
2014/03/17 职场文书
国际贸易专业求职信
2014/06/04 职场文书
债务纠纷委托书
2014/08/30 职场文书
公司领导班子召开党的群众路线教育实践活动总结大会新闻稿
2014/10/21 职场文书
2014年人事科工作总结
2014/11/19 职场文书
2015年乡镇扶贫工作总结
2015/04/08 职场文书
2015年生产车间工作总结
2015/04/22 职场文书
2015年办公室文秘工作总结
2015/04/30 职场文书
培训心得体会怎么写
2016/01/25 职场文书
《草虫的村落》教学反思
2016/02/20 职场文书
详解Python 3.10 中的新功能和变化
2021/04/28 Python