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的pandas框架操作Excel文件中的数据教程
Mar 31 Python
Python中set与frozenset方法和区别详解
May 23 Python
Python实现的双色球生成功能示例
Dec 18 Python
使用Python实现跳帧截取视频帧
May 31 Python
python numpy之np.random的随机数函数使用介绍
Oct 06 Python
基于python3 的百度图片下载器的实现代码
Nov 05 Python
TensorFlow 输出checkpoint 中的变量名与变量值方式
Feb 11 Python
Python用类实现扑克牌发牌的示例代码
Jun 01 Python
Python加载数据的5种不同方式(收藏)
Nov 13 Python
详解Scrapy Redis入门实战
Nov 18 Python
python中count函数知识点浅析
Dec 17 Python
Python matplotlib绘制雷达图
Apr 13 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之require/include顺序 推荐
2011/01/02 PHP
ThinkPHP登录功能的实现方法
2014/08/20 PHP
PHP改进计算字符串相似度的函数similar_text()、levenshtein()
2014/10/27 PHP
php检测apache mod_rewrite模块是否安装的方法
2015/03/14 PHP
JavaScript 节点操作 以及DOMDocument属性和方法
2007/12/06 Javascript
js调用css属性写法
2013/09/21 Javascript
jQuery插件EnPlaceholder实现输入框提示文字
2015/06/05 Javascript
javascript弹出拖动窗口
2015/08/11 Javascript
js实现带圆角的多级下拉菜单效果
2015/08/28 Javascript
javascript下拉列表菜单的实现方法
2015/11/18 Javascript
判断JS对象是否拥有某属性的方法推荐
2016/05/12 Javascript
knockoutjs动态加载外部的file作为component中的template数据源的实现方法
2016/09/01 Javascript
js Canvas实现圆形时钟教程
2016/09/19 Javascript
JavaScript实现弹窗效果代码分析
2017/03/09 Javascript
JavaScript登录记住密码操作(超简单代码)
2017/03/22 Javascript
利用JS对iframe父子(内外)页面进行操作的方法教程
2017/06/15 Javascript
Vuejs开发环境搭建及热更新【推荐】
2018/09/07 Javascript
Angular事件之不同组件间传递数据的方法
2018/11/15 Javascript
推荐一个基于Node.js的表单验证库
2019/02/15 Javascript
vue解决花括号数据绑定不成功的问题
2019/10/30 Javascript
es6数组之扩展运算符操作实例分析
2020/04/25 Javascript
pyqt4教程之实现半透明的天气预报界面示例
2014/03/02 Python
Python开发实例分享bt种子爬虫程序和种子解析
2014/05/21 Python
Python判断Abundant Number的方法
2015/06/15 Python
Python二叉树的镜像转换实现方法示例
2019/03/06 Python
pandas.DataFrame.drop_duplicates 用法介绍
2020/07/06 Python
canvas线条的属性详解
2018/03/27 HTML / CSS
怎样让char类型的东西转换成int类型
2013/12/09 面试题
家长评语大全
2014/01/22 职场文书
中学生期末评语
2014/02/03 职场文书
2014年小学植树节活动方案
2014/03/02 职场文书
兽医医药专业求职信
2014/07/27 职场文书
如何让vue长列表快速加载
2021/03/29 Vue.js
Django Paginator分页器的使用示例
2021/06/23 Python
基于Go语言构建RESTful API服务
2021/07/25 Golang
Python采集股票数据并制作可视化柱状图
2022/04/04 Python