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基础教程之自定义函数介绍
Aug 29 Python
Python中asyncore的用法实例
Sep 29 Python
Windows下为Python安装Matplotlib模块
Nov 06 Python
用不到50行的Python代码构建最小的区块链
Nov 16 Python
python采集微信公众号文章
Dec 20 Python
Python从单元素字典中获取key和value的实例
Dec 31 Python
学生信息管理系统Python面向对象版
Jan 30 Python
Python实现的IP端口扫描工具类示例
Feb 15 Python
Django生成PDF文档显示网页上以及PDF中文显示乱码的解决方法
Dec 17 Python
pycharm中如何自定义设置通过“ctrl+滚轮”进行放大和缩小实现方法
Sep 16 Python
class类在python中获取金融数据的实例方法
Dec 10 Python
Python Spyder 调出缩进对齐线的操作
Feb 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
php实现的遍历文件夹下所有文件,编辑删除
2010/01/05 PHP
使用PHPMYADMIN操作mysql数据库添加新用户和数据库的方法
2010/04/02 PHP
kohana框架上传文件验证规则写法示例
2014/07/14 PHP
对比分析php中Cookie与Session的异同
2016/02/19 PHP
PHP更安全的密码加密机制Bcrypt详解
2017/06/18 PHP
PHP的mysqli_set_charset()函数讲解
2019/01/23 PHP
用JavaScript显示随机图像或引用
2009/04/21 Javascript
实现只能输入数字的input不用replace方法
2013/09/12 Javascript
javascript Event对象详解及使用示例
2013/11/22 Javascript
jquery实现焦点图片随机切换效果的方法
2015/03/12 Javascript
js组件SlotMachine实现图片切换效果制作抽奖系统
2016/04/17 Javascript
使用伪命名空间封装保护独自创建的对象方法
2016/08/04 Javascript
Laravel中常见的错误与解决方法小结
2016/08/30 Javascript
js利用clipboardData实现截屏粘贴功能
2016/10/12 Javascript
如何使用jquery实现文字上下滚动效果
2016/10/12 Javascript
Javascript 实现简单计算器实例代码
2016/10/23 Javascript
解决微信内置浏览器返回上一页强制刷新问题方法
2017/02/05 Javascript
初学者AngularJS的环境搭建过程
2017/10/27 Javascript
详解如何用模块化的方式写vuejs
2017/12/16 Javascript
如何用input标签和jquery实现多图片的上传和回显功能
2018/05/16 jQuery
JavaScript学习笔记之基于定时器实现图片无缝滚动功能详解
2019/01/09 Javascript
Vue CLI3.0中使用jQuery和Bootstrap的方法
2019/02/28 jQuery
详解Vue.js中引入图片路径的几种方式
2019/06/17 Javascript
Javascript异步编程async实现过程详解
2020/04/02 Javascript
如何使用 JavaScript 操作浏览器历史记录 API
2020/11/24 Javascript
[06:23]2014DOTA2西雅图国际邀请赛 小组赛7月12日TOPPLAY
2014/07/12 DOTA
VTK与Python实现机械臂三维模型可视化详解
2017/12/13 Python
Python在终端通过pip安装好包以后在Pycharm中依然无法使用的问题(三种解决方案)
2020/03/10 Python
可以随进度显示不同颜色的css3进度条分享
2014/04/11 HTML / CSS
美国亚洲时尚和美容产品的一站式网上商店:Stylevana
2019/09/05 全球购物
电子商务专业个人的自我评价
2013/11/19 职场文书
大学毕业感言一句话
2014/02/06 职场文书
农民工讨薪标语
2014/06/26 职场文书
2016年寒假社会实践活动总结
2015/03/27 职场文书
残联2016年全国助残日活动总结
2016/04/01 职场文书
7个关于Python的经典基础案例
2021/11/07 Python