python 自定义异常和异常捕捉的方法


Posted in Python onOctober 18, 2018

异常捕捉:

try: 
 XXXXX1
 raise Exception(“xxxxx2”) 
except (Exception1,Exception2,……): 
 xxxx3
else:
 xxxxx4
finally:
 xxxxxxx5

1.raise 语句可以自定义报错信息,如上。

2. raise后的语句是不会被执行了,因为已经抛出异常,控制流将会跳到异常捕捉模块。

3. except 语句可以一个except后带多个异常,也可以用多个语句捕捉多个异常,分别做不同处理。

4. except语句捕捉的异常如果没有发生,那么except里的语句块是不被执行的。而是执行else里的语句

5. 在上面语句中try/except/else/finally所出现的顺序必须是try?>except X?>except?>else?>finally,即所有的except必须在else和finally之前,else(如果有的话)必须在finally之前,而except X必须在except之前。否则会出现语法错误。

6.else和finally都是可选的.

7.在上面的完整语句中,else语句的存在必须以except X或者except语句为前提,如果在没有except语句的try block中使用else语句会引发语法错误。

异常参数输出:

try:
 testRaise()
except PreconditionsException as e: #python3的写法,必须用as
 print (e)

自定义异常,只需自定义异常类继承父类Exception。在自定义异常类中,重写父类init方法。

class DatabaseException(Exception):
 def __init__(self,err='数据库错误'):
  Exception.__init__(self,err)

class PreconditionsException(DatabaseException):
 def __init__(self,err='PreconditionsErr'):
  DatabaseException.__init__(self,err)

def testRaise():
 raise PreconditionsException()

try:
 testRaise()
except PreconditionsException as e:
 print (e)

注意:PreconditonsException又是DatabaseException的子类。

所以如果,raise PreconditionException的话,用两个异常类都可以捕捉。

但是, 如果是raise DatabaseException, 用PreconditonsException是捕捉不到的。

以上这篇python 自定义异常和异常捕捉的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python快速排序代码实例
Nov 21 Python
利用Python学习RabbitMQ消息队列
Nov 30 Python
python django事务transaction源码分析详解
Mar 17 Python
Python 获得13位unix时间戳的方法
Oct 20 Python
Python批量更改文件名的实现方法
Oct 29 Python
Python 用Redis简单实现分布式爬虫的方法
Nov 23 Python
Python 实现取矩阵的部分列,保存为一个新的矩阵方法
Nov 14 Python
Python函数的返回值、匿名函数lambda、filter函数、map函数、reduce函数用法实例分析
Dec 26 Python
将tensorflow.Variable中的某些元素取出组成一个新的矩阵示例
Jan 04 Python
Python实现病毒仿真器的方法示例(附demo)
Feb 19 Python
python实现提取str字符串/json中多级目录下的某个值
Feb 27 Python
Python中的wordcloud库安装问题及解决方法
May 27 Python
详解Python发送email的三种方式
Oct 18 #Python
python try except 捕获所有异常的实例
Oct 18 #Python
对Python中Iterator和Iterable的区别详解
Oct 18 #Python
对python中的iter()函数与next()函数详解
Oct 18 #Python
对Python 3.2 迭代器的next函数实例讲解
Oct 18 #Python
对python中的高效迭代器函数详解
Oct 18 #Python
对Python中内置异常层次结构详解
Oct 18 #Python
You might like
yii框架配置默认controller和action示例
2014/04/30 PHP
Yii调试SQL的常用方法
2014/07/09 PHP
php命令行(cli)模式下报require 加载路径错误的解决方法
2015/11/23 PHP
Zend Framework动作助手FlashMessenger用法详解
2016/03/05 PHP
根据key删除数组中指定的元素实现方法
2017/03/02 PHP
js option删除代码集合
2008/11/12 Javascript
JavaScript toFixed() 方法
2010/04/15 Javascript
javascript 常用功能总结
2012/03/18 Javascript
javascript中定义类的方法汇总
2014/12/28 Javascript
AngularJS模块详解及示例代码
2016/08/17 Javascript
利用D3.js实现最简单的柱状图示例代码
2016/12/09 Javascript
详解jQuery的表单验证插件--Validation
2016/12/21 Javascript
如何提高javascript加载速度
2016/12/26 Javascript
react项目实践之webpack-dev-serve
2018/09/14 Javascript
AngularJS上传文件的示例代码
2018/11/10 Javascript
Angular6 Filter实现页面搜索的示例代码
2018/12/02 Javascript
在vue中获取微信支付code及code被占用问题的解决方法
2019/04/16 Javascript
[01:22:42]2014 DOTA2华西杯精英邀请赛 5 24 DK VS LGD
2014/05/26 DOTA
详解Python编程中基本的数学计算使用
2016/02/04 Python
python 脚本生成随机 字母 + 数字密码功能
2018/05/26 Python
Python模拟登录的多种方法(四种)
2018/06/01 Python
关于python下cv.waitKey无响应的原因及解决方法
2019/01/10 Python
解决django-xadmin列表页filter关联对象搜索问题
2019/11/15 Python
基于Python执行dos命令并获取输出的结果
2019/12/30 Python
Python  Asyncio模块实现的生产消费者模型的方法
2021/03/01 Python
你可能不熟练的十个前端HTML5经典面试题
2018/07/03 HTML / CSS
什么是TCP/IP
2014/07/27 面试题
《桃花心木》教学反思
2014/02/17 职场文书
电气工程自动化求职信
2014/03/14 职场文书
高中运动会广播稿
2014/09/16 职场文书
打架检讨书
2015/01/27 职场文书
结婚通知短信怎么写
2015/04/17 职场文书
2015财务年终工作总结范文
2015/05/22 职场文书
2016年社区服务活动总结
2016/04/06 职场文书
Canvas绘制像素风图片的示例代码
2021/09/25 HTML / CSS
python数字图像处理之对比度与亮度调整示例
2022/06/28 Python