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中函数参数设置及使用的学习笔记
May 03 Python
linux环境下的python安装过程图解(含setuptools)
Nov 22 Python
Python3结合Dlib实现人脸识别和剪切
Jan 24 Python
tensorflow建立一个简单的神经网络的方法
Feb 10 Python
python版opencv摄像头人脸实时检测方法
Aug 03 Python
python 实现调用子文件下的模块方法
Dec 07 Python
Python封装成可带参数的EXE安装包实例
Aug 24 Python
python tornado修改log输出方式
Nov 18 Python
如何基于python操作json文件获取内容
Dec 24 Python
opencv 阈值分割的具体使用
Jul 08 Python
Python实现天气查询软件
Jun 07 Python
关于python中readlines函数的参数hint的相关知识总结
Jun 24 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
虹吸式咖啡探讨–研磨
2021/03/03 冲泡冲煮
php a simple smtp class
2007/11/26 PHP
PHP语言中global和$GLOBALS[]的分析 之二
2012/02/02 PHP
smarty获得当前url的方法分享
2014/02/14 PHP
Php连接及读取和写入mysql数据库的常用代码
2014/08/11 PHP
php获取用户浏览器版本的方法
2015/01/03 PHP
php使用mysqli向数据库添加数据的方法
2015/03/20 PHP
在openSUSE42.1下编译安装PHP7 的方法
2015/12/24 PHP
关于js中for in的缺陷浅析
2013/12/02 Javascript
20个实用的JavaScript技巧分享
2014/11/28 Javascript
jQuery实现简洁的导航菜单效果
2015/11/23 Javascript
jQuery+ajax+asp.net获取Json值的方法
2016/06/08 Javascript
jQuery.ajax实现根据不同的Content-Type做出不同的响应
2016/11/03 Javascript
js实现的在线调色板功能完整实例
2016/12/21 Javascript
JavaScript自定义文本框光标
2017/03/05 Javascript
Vue实现简单计算器案例
2020/02/25 Javascript
js实现飞机大战游戏
2020/08/26 Javascript
用Python的Django框架来制作一个RSS阅读器
2015/07/22 Python
详解Python字符串对象的实现
2015/12/24 Python
python添加菜单图文讲解
2019/06/04 Python
tensorflow2.0与tensorflow1.0的性能区别介绍
2020/02/07 Python
Python进程的通信Queue、Pipe实例分析
2020/03/30 Python
python3 配置logging日志类的操作
2020/04/08 Python
Python使用OpenPyXL处理Excel表格
2020/07/02 Python
德国亚马逊官方网站:Amazon.de
2020/11/15 全球购物
字符串str除首尾字符外的其他字符按升序排列
2013/03/08 面试题
命名空间(namespace)和程序集(Assembly)有什么区别
2015/09/25 面试题
一套C#面试题
2013/10/09 面试题
材料成型专业个人求职信范文
2013/09/25 职场文书
最新计算机专业自荐信
2013/10/16 职场文书
高分子材料与工程专业推荐信
2013/12/01 职场文书
大型晚会策划方案
2014/02/06 职场文书
《阳光》教学反思
2014/02/23 职场文书
公司贷款承诺书
2014/05/30 职场文书
原生Javascript+HTML5一步步实现拖拽排序
2021/06/12 Javascript
抖音动画片,皮皮虾,《治愈系》动画在用这首REMIX作为背景音乐,Anak ,The last world with you完整版
2022/03/16 杂记