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操作CouchDB的方法
Oct 08 Python
Python入门篇之条件、循环
Oct 17 Python
python 定时修改数据库的示例代码
Apr 08 Python
用python处理图片实现图像中的像素访问
May 04 Python
Sanic框架应用部署方法详解
Jul 18 Python
python得到单词模式的示例
Oct 15 Python
关于Django ForeignKey 反向查询中filter和_set的效率对比详解
Dec 15 Python
Python基于scipy实现信号滤波功能
May 08 Python
python基于socket进行端口转发实现后门隐藏的示例
Jul 25 Python
对python中return与yield的区别详解
Mar 12 Python
Python Selenium操作Cookie的实例方法
Feb 28 Python
详解Python requests模块
Jun 21 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
DC漫画《蝙蝠侠和猫女》图透 猫女怀孕老爷当爹
2020/04/09 欧美动漫
利用static实现表格的颜色隔行显示的代码
2007/09/02 PHP
关于页面优化和伪静态
2009/10/11 PHP
js Date自定义函数 延迟脚本执行
2010/03/10 Javascript
JavaScript 原型与继承说明
2010/06/09 Javascript
FileUpload上传图片(图片不变形)
2010/08/05 Javascript
js 获取radio按钮值的实例
2013/08/17 Javascript
ajax请求get与post的区别总结
2013/11/04 Javascript
Ajax同步与异步传输的示例代码
2013/11/21 Javascript
jquery设置text的值示例(设置文本框 DIV 表单值)
2014/01/06 Javascript
Jquery如何实现点击时高亮显示代码
2014/01/22 Javascript
js获取指定日期周数以及星期几的小例子
2014/06/27 Javascript
浅谈Javascript如何实现匀速运动
2014/12/19 Javascript
javascript中return,return true,return false三者的用法及区别
2015/11/17 Javascript
jquery购物车结算功能实现方法
2020/10/29 Javascript
JavaScript运动框架 多物体任意值运动(三)
2017/05/17 Javascript
vue 1.0 结合animate.css定义动画效果
2018/07/11 Javascript
详解mpvue小程序中怎么引入iconfont字体图标
2018/10/01 Javascript
js前端面试之同步与异步问题详解
2019/04/03 Javascript
Nuxt.js实现一个SSR的前端博客的示例代码
2019/09/06 Javascript
基于Vue 撸一个指令实现拖拽功能
2019/10/09 Javascript
Element PageHeader页头的使用方法
2020/07/26 Javascript
Vue触发input选取文件点击事件操作
2020/08/07 Javascript
vue 使用 v-model 双向绑定父子组件的值遇见的问题及解决方案
2021/03/01 Vue.js
从零学python系列之浅谈pickle模块封装和拆封数据对象的方法
2014/05/23 Python
python映射列表实例分析
2015/01/26 Python
人生苦短我用python python如何快速入门?
2018/03/12 Python
Python实现爬虫爬取NBA数据功能示例
2018/05/28 Python
在PyTorch中使用标签平滑正则化的问题
2020/04/03 Python
PyQt5结合matplotlib绘图的实现示例
2020/09/15 Python
css3之UI元素状态伪类选择器实例演示
2017/08/11 HTML / CSS
HTML5的表单(绝对特别强大的功能)使用示例
2013/06/20 HTML / CSS
法定代表人授权委托书
2014/04/04 职场文书
公安交警中队队长个人对照检查材料思想汇报
2014/10/05 职场文书
不尊敬老师检讨书范文
2014/11/19 职场文书
html输入两个数实现加减乘除功能
2021/07/01 HTML / CSS