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代码做configure文件
Jul 20 Python
Django框架中的对象列表视图使用示例
Jul 21 Python
Python 中的 else详解
Apr 23 Python
Python中单、双下划线的区别总结
Dec 01 Python
Python字符串拼接六种方法介绍
Dec 18 Python
python的格式化输出(format,%)实例详解
Jun 01 Python
详解Python列表赋值复制深拷贝及5种浅拷贝
May 15 Python
10分钟教你用python动画演示深度优先算法搜寻逃出迷宫的路径
Aug 12 Python
Python socket聊天脚本代码实例
Jan 02 Python
Pytorch GPU显存充足却显示out of memory的解决方式
Jan 13 Python
python实现信号时域统计特征提取代码
Feb 26 Python
Python telnet登陆功能实现代码
Apr 16 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公用函数列表[正则]
2007/02/22 PHP
phpmyadmin 3.4 空密码登录的实现方法
2010/05/29 PHP
记录一次排查PHP脚本执行卡住的问题
2016/12/27 PHP
Yii输入正确验证码却验证失败的解决方法
2017/06/06 PHP
php设计模式之单例模式用法经典示例分析
2019/09/20 PHP
十分钟打造AutoComplete自动完成效果代码
2009/12/26 Javascript
jquery中加载图片自适应大小主要实现代码
2013/08/23 Javascript
JavaScript中prototype为对象添加属性的误区介绍
2013/10/15 Javascript
nodejs中使用monk访问mongodb
2014/07/06 NodeJs
JavaScript中判断整字类型最简洁的实现方法
2014/11/08 Javascript
node.js超时timeout详解
2014/11/26 Javascript
JS打开新窗口防止被浏览器阻止的方法
2015/01/03 Javascript
Jquery使用val方法读写value值
2015/05/18 Javascript
异步安全加载javascript文件的方法
2015/07/21 Javascript
JavaScript实现节点的删除与序号重建实例
2015/08/05 Javascript
javascript跨域的方法汇总
2015/10/23 Javascript
javascript的BOM
2016/05/03 Javascript
jquery处理checkbox(复选框)是否被选中实例代码
2017/06/12 jQuery
使用webpack打包后的vue项目如何正确运行(express)
2018/10/26 Javascript
详解Node.js 中使用 ECDSA 签名遇到的坑
2018/11/26 Javascript
JS数组splice操作实例分析
2019/10/12 Javascript
js实现点击生成随机div
2020/01/16 Javascript
[59:59]EG vs IG 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
详解Python中time()方法的使用的教程
2015/05/22 Python
关于探究python中sys.argv时遇到的问题详解
2021/02/23 Python
Waterford加拿大官方网站:世界著名的水晶杯品牌
2016/11/01 全球购物
自主招生自荐信范文
2013/12/04 职场文书
联欢晚会主持词
2014/03/25 职场文书
2014第二批党的群众路线教育实践活动对照检查材料思想汇报
2014/09/18 职场文书
员工工作及收入证明
2014/10/28 职场文书
服务明星事迹材料
2014/12/29 职场文书
小学六一儿童节活动开幕词
2016/03/04 职场文书
干货:如何写好观后感 !
2019/05/21 职场文书
浙江省杭州市平均工资标准是多少?
2019/07/09 职场文书
员工保密协议范本,您一定得收藏!很有用!
2019/08/08 职场文书
SQL模糊查询报:ORA-00909:参数个数无效问题的解决
2021/06/21 Oracle