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网络编程学习笔记(一)
Jun 09 Python
python检查字符串是否是正确ISBN的方法
Jul 11 Python
在Python的Django框架中包装视图函数
Jul 20 Python
python中range()与xrange()用法分析
Sep 21 Python
Python学习小技巧之利用字典的默认行为
May 20 Python
python实现redis三种cas事务操作
Dec 19 Python
Python3中详解fabfile的编写
Jun 24 Python
django Admin文档生成器使用详解
Jul 22 Python
python实现图片压缩代码实例
Aug 12 Python
python Qt5实现窗体跟踪鼠标移动
Dec 13 Python
django admin 根据choice字段选择的不同来显示不同的页面方式
May 13 Python
python学习之panda数据分析核心支持库
May 07 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
抛弃 PHP 代价太高
2016/04/26 PHP
PHP简单预防sql注入的方法
2016/09/27 PHP
Laravel5.5以下版本中如何自定义日志行为详解
2018/08/01 PHP
使用Zookeeper分布式部署PHP应用程序
2019/03/15 PHP
自定义的一个简单时尚js下拉选择框
2013/11/20 Javascript
解析页面加载与js函数的执行 onload or ready
2013/12/12 Javascript
js通过八个点 拖动改变div大小的实现方法
2014/03/05 Javascript
JQuery.Ajax()的data参数类型实例详解
2015/11/20 Javascript
基于jQuery通过jQuery.form.js插件实现异步上传
2015/12/13 Javascript
vueJS简单的点击显示与隐藏的效果【实现代码】
2016/05/03 Javascript
js canvas实现擦除动画
2016/07/16 Javascript
Javascript学习之谈谈JS的全局变量跟局部变量(推荐)
2016/08/28 Javascript
NodeJs下的测试框架Mocha的简单介绍
2017/02/22 NodeJs
快速使用node.js进行web开发详解
2017/04/26 Javascript
jQuery正则验证注册页面经典实例
2017/06/10 jQuery
Vue2 SSR渲染根据不同页面修改 meta
2017/11/20 Javascript
vue 双向数据绑定的实现学习之监听器的实现方法
2018/11/30 Javascript
微信小程序实现的日期午别医生排班表功能示例
2019/01/09 Javascript
微信小程序发布新版本时自动提示用户更新的方法
2019/06/07 Javascript
layui实现数据表格自定义数据项
2019/10/26 Javascript
python操作MySQL数据库的方法分享
2012/05/29 Python
对于Python编程中一些重用与缩减的建议
2015/04/14 Python
python tornado微信开发入门代码
2018/08/24 Python
python plotly绘制直方图实例详解
2019/07/22 Python
Python logging模块原理解析及应用
2020/08/13 Python
ABOUT YOU匈牙利:500个最受欢迎的时尚品牌
2019/07/19 全球购物
俄罗斯在线购买飞机票、火车票、巴士票网站:Tutu.ru
2020/03/16 全球购物
四川internet信息高速公路(C#)笔试题
2012/02/29 面试题
META-INF文件夹中的MANIFEST.MF的作用
2016/06/21 面试题
业务经理的岗位职责
2013/11/16 职场文书
物理教师自荐信范文
2013/12/28 职场文书
法制宣传标语
2014/06/23 职场文书
医学会议开幕词
2016/03/03 职场文书
2019年励志签名:致拼搏路上的自己
2019/10/11 职场文书
CSS 圆形进度栏
2021/04/06 HTML / CSS
Apache SeaTunnel实现 非CDC数据抽取
2022/05/20 Servers