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中os和shutil模块实用方法集锦
May 13 Python
Django中传递参数到URLconf的视图函数中的方法
Jul 18 Python
Python中的条件判断语句基础学习教程
Feb 07 Python
Python 包含汉字的文件读写之每行末尾加上特定字符
Dec 12 Python
浅析python打包工具distutils、setuptools
Apr 20 Python
详解python异步编程之asyncio(百万并发)
Jul 07 Python
pytorch 数据集图片显示方法
Jul 26 Python
解决python打不开文件(文件不存在)的问题
Feb 18 Python
python识别图像并提取文字的实现方法
Jun 28 Python
python实现差分隐私Laplace机制详解
Nov 25 Python
Jupyter Notebook折叠输出的内容实例
Apr 22 Python
如何实现在jupyter notebook中播放视频(不停地展示图片)
Apr 23 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
phpmyadmin安装时提示:Warning: require_once(./libraries/common.inc.php)错误解决办法
2011/08/18 PHP
PHP5.3与5.5废弃与过期函数整理汇总
2014/07/10 PHP
php检测apache mod_rewrite模块是否安装的方法
2015/03/14 PHP
php实现的mysqldb读写分离操作类示例
2017/02/07 PHP
php 函数使用可变数量的参数方法
2017/05/02 PHP
Javascript实例教程(19) 使用HoTMetal(7)
2006/12/23 Javascript
firefox中用javascript实现鼠标位置的定位
2007/06/17 Javascript
点击文章内容处弹出页面代码
2009/10/01 Javascript
jquery实现点击文字可编辑并修改保存至数据库
2014/04/15 Javascript
创建js对象和js类的方法汇总
2014/12/24 Javascript
JQuery中Ajax()的data参数类型实例分析
2015/12/15 Javascript
JavaScript获取当前url根目录(路径)
2016/06/17 Javascript
js制作网站首页图片轮播特效代码
2016/08/30 Javascript
bootstrap-datetimepicker实现只显示到日期的方法
2016/11/25 Javascript
BootStrap表单验证 FormValidation 调整反馈图标位置的实例代码
2017/05/17 Javascript
JAVA面试题 static关键字详解
2019/07/16 Javascript
JS实现滑动导航效果
2020/01/14 Javascript
JS判断浏览器类型与操作系统的方法分析
2020/04/30 Javascript
[50:27]OG vs LGD 2018国际邀请赛淘汰赛BO3 第一场 8.26
2018/08/30 DOTA
收藏整理的一些Python常用方法和技巧
2015/05/18 Python
Python cx_freeze打包工具处理问题思路及解决办法
2016/02/13 Python
Python和C/C++交互的几种方法总结
2017/05/11 Python
python快速建立超简单的web服务器的实现方法
2018/02/17 Python
python框架中flask知识点总结
2018/08/17 Python
Django使用 Bootstrap 样式修改书籍列表过程解析
2019/08/09 Python
jupyternotebook 撤销删除的操作方式
2020/04/17 Python
Python socket服务常用操作代码实例
2020/06/22 Python
德国户外装备、登山运动和攀岩商店:tapir store
2020/02/12 全球购物
生产管理的三大手法
2013/11/11 职场文书
公务员平时考核实施方案
2014/03/11 职场文书
工作评语大全
2014/04/26 职场文书
党员自我剖析材料(群众路线)
2014/10/06 职场文书
2014年绩效考核工作总结
2014/12/11 职场文书
被告答辩状范文
2015/05/22 职场文书
债务纠纷代理词
2015/05/25 职场文书
MySQL 数据恢复的多种方法汇总
2021/06/21 MySQL