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 相关文章推荐
Python3.0与2.X版本的区别实例分析
Aug 25 Python
详解Python的Django框架中Manager方法的使用
Jul 21 Python
关于Python中异常(Exception)的汇总
Jan 18 Python
Python迭代器定义与简单用法分析
Apr 30 Python
python pycurl验证basic和digest认证的方法
May 02 Python
从运行效率与开发效率比较Python和C++
Dec 14 Python
Python合并同一个文件夹下所有PDF文件的方法
Mar 11 Python
django中forms组件的使用与注意
Jul 08 Python
python 怎样将dataframe中的字符串日期转化为日期的方法
Sep 26 Python
keras实现VGG16 CIFAR10数据集方式
Jul 07 Python
详解pycharm配置python解释器的问题
Oct 15 Python
python实现简单的名片管理系统
Apr 26 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
PHP4实际应用经验篇(1)
2006/10/09 PHP
php 5.6版本中编写一个PHP扩展的简单示例
2015/01/20 PHP
PHP多维数组转一维数组的简单实现方法
2015/12/23 PHP
Laravel框架Blade模板简介及模板继承用法分析
2019/12/03 PHP
用JavaScript实现UrlEncode和UrlDecode的脚本代码
2008/07/23 Javascript
javascript Demo模态窗口
2009/12/06 Javascript
遨游,飞飞,IE,空中网 浏览器无提示关闭方法
2011/07/11 Javascript
window.open关于浏览器拦截问题分析及解决方法
2013/02/05 Javascript
jquery 通过name快速取值示例
2014/01/24 Javascript
理解javascript回调函数
2014/12/28 Javascript
jQuery无刷新切换主题皮肤实例讲解
2015/10/21 Javascript
JavaScript中ES6 Babel正确安装过程
2016/07/18 Javascript
vue-resourse将json数据输出实例
2017/03/08 Javascript
AngularJs导出数据到Excel的示例代码
2017/08/11 Javascript
JavaScript-定时器0~9抽奖系统详解(代码)
2017/08/16 Javascript
Three.js 再探 - 写一个微信跳一跳极简版游戏
2018/01/04 Javascript
Vue监听数据渲染DOM完以后执行某个函数详解
2018/09/11 Javascript
微信小程序订阅消息(java后端实现)开发
2020/06/01 Javascript
解决qrcode.js生成二维码时必须定义一个空div的问题
2020/07/09 Javascript
原生js实现自定义滚动条
2021/01/20 Javascript
[01:01:18]DOTA2上海特级锦标赛主赛事日 - 2 败者组第二轮#2COL VS LGD
2016/03/03 DOTA
Python中random模块生成随机数详解
2016/03/10 Python
Python常见加密模块用法分析【MD5,sha,crypt模块】
2017/05/24 Python
Python模拟脉冲星伪信号频率实例代码
2018/01/03 Python
python实现简易版计算器
2020/06/22 Python
python实现彩色图转换成灰度图
2019/01/15 Python
Python如何应用cx_Oracle获取oracle中的clob字段问题
2019/08/27 Python
python:解析requests返回的response(json格式)说明
2020/04/30 Python
利用python绘制正态分布曲线
2021/01/04 Python
C#中的验证控件有几种
2014/03/08 面试题
敏捷开发的主要原则都有哪些
2015/04/26 面试题
超市开店计划书
2014/04/26 职场文书
开工典礼策划方案
2014/05/23 职场文书
银行奉献演讲稿
2014/09/16 职场文书
汽车销售助理岗位职责
2015/04/14 职场文书
Pytorch中Softmax和LogSoftmax的使用详解
2021/06/05 Python