python怎么自定义捕获错误


Posted in Python onJune 29, 2020

异常捕捉:

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自定义异常捕获异常处理异常

def set_inf(name,age):
  if not 0 < age < 120:
    raise ValueError('超出范围')
  else:
    print('%s is %s years old' % (name,age))
def set_inf2(name,age):
  assert 0 < age < 120,'超出范围'
  print('%s is %s years old' % (name,age))
if __name__ == '__main__':
  try:
   set_inf('bob',200)
  except ValueError as e:
    print('无效值:',e)
  set_inf2('bob',200)

到此这篇关于python怎么自定义捕获错误的文章就介绍到这了,更多相关python自定义捕获错误的方法内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python 文件读写操作实例详解
Mar 12 Python
Python读大数据txt
Mar 28 Python
解决python中 f.write写入中文出错的问题
Oct 31 Python
pygame游戏之旅 添加游戏介绍
Nov 20 Python
详解django中url路由配置及渲染方式
Feb 25 Python
linux下安装python3和对应的pip环境教程详解
Jul 01 Python
pip指定python位置安装软件包的方法
Jul 12 Python
关于初始种子自动选取的区域生长实例(python+opencv)
Jan 16 Python
pycharm下配置pyqt5的教程(anaconda虚拟环境下+tensorflow)
Mar 25 Python
django创建css文件夹的具体方法
Jul 31 Python
基于python制作简易版学生信息管理系统
Apr 20 Python
我对PyTorch dataloader里的shuffle=True的理解
May 20 Python
python打开文件的方式有哪些
Jun 29 #Python
解决tensorflow/keras时出现数组维度不匹配问题
Jun 29 #Python
python中如何写类
Jun 29 #Python
基于Python的自媒体小助手---登录页面的实现代码
Jun 29 #Python
Python unittest基本使用方法代码实例
Jun 29 #Python
解决keras使用cov1D函数的输入问题
Jun 29 #Python
快速了解Python开发环境Spyder
Jun 29 #Python
You might like
探讨:使用XMLSerialize 序列化与反序列化
2013/06/08 PHP
ExtJs事件机制基本代码模型和流程解析
2010/10/24 Javascript
jQuery find和children方法使用
2011/01/31 Javascript
推荐11款jQuery开发的复选框和单选框美化插件
2011/08/02 Javascript
JQuery插件开发示例代码
2013/11/06 Javascript
js常用自定义公共函数汇总
2014/01/15 Javascript
js带缩略图的图片轮播效果代码分享
2015/09/14 Javascript
Web程序员必备的7个JavaScript函数
2016/06/14 Javascript
JS及PHP代码编写八大排序算法
2016/07/12 Javascript
文件上传的几个示例分享【推荐】
2016/12/16 Javascript
ES6学习之变量的解构赋值
2017/02/12 Javascript
vue Render中slots的使用的实例代码
2017/07/19 Javascript
js微信分享实现代码
2020/10/11 Javascript
vue router demo详解
2017/10/13 Javascript
Webpack中雪碧图插件使用详解
2018/05/25 Javascript
JavaScript数组去重的几种方法
2019/04/07 Javascript
浅谈Vuex注入Vue生命周期的过程
2019/05/20 Javascript
element el-tree组件的动态加载、新增、更新节点的实现
2020/02/27 Javascript
vue样式穿透 ::v-deep的具体使用
2020/06/04 Javascript
[01:13:01]2018DOTA2亚洲邀请赛 4.4 淘汰赛 TNC vs VG 第三场
2018/04/05 DOTA
Python的爬虫包Beautiful Soup中用正则表达式来搜索
2016/01/20 Python
Windows下Anaconda的安装和简单使用方法
2018/01/04 Python
python中将\\uxxxx转换为Unicode字符串的方法
2018/09/06 Python
Python创建一个空的dataframe,并循环赋值的方法
2018/11/08 Python
PyCharm-错误-找不到指定文件python.exe的解决方法
2019/07/01 Python
python实现控制台输出彩色字体
2020/04/05 Python
Python configparser模块封装及构造配置文件
2020/08/07 Python
Python类class参数self原理解析
2020/11/19 Python
带你认识HTML5中的WebSocket
2015/05/22 HTML / CSS
手工制作的意大利太阳镜和光学元件:Illesteva
2019/01/19 全球购物
电子信息毕业生自荐信
2013/11/16 职场文书
双拥工作宣传标语
2014/06/26 职场文书
干部四风问题整改措施思想汇报
2014/10/13 职场文书
2014年商场工作总结
2014/11/22 职场文书
2015年学生会纪检部工作总结
2015/03/31 职场文书
Python面向对象之成员相关知识总结
2021/06/24 Python