浅谈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 18 Python
详解python调度框架APScheduler使用
Mar 28 Python
python中map()函数的使用方法示例
Sep 29 Python
Python爬虫获取图片并下载保存至本地的实例
Jun 01 Python
基于Python函数和变量名解析
Jul 19 Python
详解python中的index函数用法
Aug 06 Python
python创建n行m列数组示例
Dec 02 Python
python 计算方位角实例(根据两点的坐标计算)
Jan 17 Python
windows python3安装Jupyter Notebooks教程
Apr 13 Python
python2.7使用scapy发送syn实例
May 05 Python
pytorch随机采样操作SubsetRandomSampler()
Jul 07 Python
详解Python中*args和**kwargs的使用
Apr 07 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
Mysql的GROUP_CONCAT()函数使用方法
2008/03/28 PHP
C#使用PHP服务端的Web Service通信实例
2014/04/08 PHP
Yii2 RESTful中api的使用及开发实例详解
2016/07/06 PHP
php自定义时间转换函数示例
2016/12/07 PHP
Zend Framework入门教程之Zend_Mail用法示例
2016/12/08 PHP
PHP基于rabbitmq操作类的生产者和消费者功能示例
2018/06/16 PHP
php使用fputcsv实现大数据的导出操作详解
2020/02/27 PHP
JavaScript学习点滴 call、apply的区别
2010/10/22 Javascript
js中的getAttribute方法使用示例
2014/08/01 Javascript
一款由jquery实现的整屏切换特效
2014/09/15 Javascript
javascript跨域请求包装函数与用法示例
2016/11/03 Javascript
bootstrap table分页模板和获取表中的ID方法
2017/01/10 Javascript
React组件的三种写法总结
2017/01/12 Javascript
原生JavaScript实现Tooltip浮动提示框特效
2017/03/07 Javascript
ReactJs设置css样式的方法
2017/06/08 Javascript
详解jquery选择器的原理
2017/08/01 jQuery
react native带索引的城市列表组件的实例代码
2017/08/08 Javascript
web前端vue之vuex单独一文件使用方式实例详解
2018/01/11 Javascript
Vue开发Html5微信公众号的步骤
2019/04/11 Javascript
JavaScript变量基本使用方法实例分析
2019/11/15 Javascript
Ant design vue中的联动选择取消操作
2020/10/31 Javascript
python读取浮点数和读取文本文件示例
2014/05/06 Python
python中使用urllib2获取http请求状态码的代码例子
2014/07/07 Python
Python实现在Linux系统下更改当前进程运行用户
2015/02/04 Python
Python实现的字典值比较功能示例
2018/01/08 Python
python实现桌面托盘气泡提示
2019/07/29 Python
详细介绍pandas的DataFrame的append方法使用
2019/07/31 Python
细数nn.BCELoss与nn.CrossEntropyLoss的区别
2020/02/29 Python
日本高端护肤品牌:Tatcha
2016/08/29 全球购物
法学专业自我鉴定
2014/02/05 职场文书
学徒工职责
2014/03/06 职场文书
农林经济管理专业自荐信
2014/09/01 职场文书
《观察物体》教学反思
2016/02/17 职场文书
手残删除python之后的补救方法
2021/06/26 Python
详解CSS中的特指度和层叠问题
2021/07/15 HTML / CSS
python微信智能AI机器人实现多种支付方式
2022/04/12 Python