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 08 Python
关于Python中异常(Exception)的汇总
Jan 18 Python
python中安装Scrapy模块依赖包汇总
Jul 02 Python
python交互式图形编程实例(三)
Nov 17 Python
Python实现的计数排序算法示例
Nov 29 Python
python列表生成式与列表生成器的使用
Feb 23 Python
python2.7+selenium2实现淘宝滑块自动认证功能
Feb 24 Python
详解重置Django migration的常见方式
Feb 15 Python
Python3网络爬虫中的requests高级用法详解
Jun 18 Python
Python urlopen()和urlretrieve()用法解析
Jan 07 Python
使用tensorflow实现VGG网络,训练mnist数据集方式
May 26 Python
用Python远程登陆服务器的步骤
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 搜索查询功能实现
2016/11/29 PHP
php readfile()修改文件上传大小设置
2017/08/11 PHP
php curl简单采集图片生成base64编码(并附curl函数参数说明)
2019/02/15 PHP
一个选择最快的服务器转向代码
2009/04/27 Javascript
jquery插件制作教程 txtHover
2012/08/17 Javascript
javascript动态添加样式(行内式/嵌入式/外链式等规则)
2013/06/24 Javascript
js history对象简单实现返回和前进
2013/10/30 Javascript
jQuery对html元素取值与赋值的方法
2013/11/20 Javascript
javascript 按键事件(兼容各浏览器)
2013/12/20 Javascript
jquery的父子兄弟节点查找示例代码
2014/03/03 Javascript
jQuery验证插件 Validate详解
2014/11/20 Javascript
Javascript中的apply()方法浅析
2015/03/15 Javascript
JavaScript中的splice()方法使用详解
2015/06/09 Javascript
理解JS事件循环
2016/01/07 Javascript
jQuery的实例及必知重要的jQuery选择器详解
2016/05/20 Javascript
JS使用eval()动态创建变量的方法
2016/06/03 Javascript
基于Bootstrap的Metronic框架实现条码和二维码的生成及打印处理操作
2016/08/29 Javascript
微信小程序 登录实例详解
2017/01/16 Javascript
详解闭包解决jQuery中AJAX的外部变量问题
2017/02/22 Javascript
Vue中之nextTick函数源码分析详解
2017/10/17 Javascript
VUE-cli3使用 svg-sprite-loader
2018/10/20 Javascript
jsonp格式前端发送和后台接受写法的代码详解
2019/11/07 Javascript
[42:22]DOTA2上海特级锦标赛C组小组赛#1 OG VS Archon第一局
2016/02/27 DOTA
jupyter notebook引用from pyecharts.charts import Bar运行报错
2020/04/23 Python
Pandas之MultiIndex对象的示例详解
2019/06/25 Python
python GUI库图形界面开发之PyQt5访问系统剪切板QClipboard类详细使用方法与实例
2020/02/27 Python
Python实现图片指定位置加图片水印(附Pyinstaller打包exe)
2021/03/04 Python
html5手机键盘弹出收起的处理
2020/01/20 HTML / CSS
意大利网上药房:Farmacia 33
2020/01/27 全球购物
学生自我鉴定模板
2013/12/30 职场文书
职业生涯规划设计步骤
2014/01/12 职场文书
先进工作者获奖感言
2014/02/08 职场文书
地理信息科学专业推荐信
2014/09/08 职场文书
学子宴致辞大全
2015/07/27 职场文书
微信早安问候语
2015/11/10 职场文书
七夕情人节问候语
2015/11/11 职场文书