Python-Python 3.x下自定义异常抛出和接收多个值的技巧
2016-07-20 16:04
495 查看
在使用Python的时候,有时候想自己自定义异常错误,同时抛出多个参数,比如对数据库查找一个用户,如果没有找到,返回
{"errCode":"-1", "errMsg":"没有该用户!"}的Json信息,那么异常需要抛出errCode和errMsg。下面的代码解决了该问题,也就是自定义异常抛出和接收多个值的技巧:
调试台打印的信息如下:
errCode: -1
errMsg: 没有该用户!
Process finished with exit code 0
由于自定义异常错误是一个类,继承了ValueError,在PyCharm环境下Ctrl+鼠标左键跳转到ValueError查看,ValueError代码如下:
初始化参数是*args和**kwagrs,所以except MyError as msg之后,msg.args[0]就是raise MyError(MyError.ERROR[0], MyError.ERROR[1])的第一个参数MyError.ERROR[0],msg.args[1]为第二个参数MyError.ERROR[1]。
{"errCode":"-1", "errMsg":"没有该用户!"}的Json信息,那么异常需要抛出errCode和errMsg。下面的代码解决了该问题,也就是自定义异常抛出和接收多个值的技巧:
# 自定义异常错误 class MyError(ValueError): ERROR=("-1", "没有该用户!") # 抛出异常测试函数 def raiseTest(): # 抛出异常 raise MyError(MyError.ERROR[0], # 异常错误参数1 MyError.ERROR[1]) # 异常错误参数2 # 主函数 if __name__ == '__main__': try: raiseTest() except MyError as msg: print("errCode:", msg.args[0]) # 获取异常错误参数1 print("errMsg:", msg.args[1]) # 获取异常错误参数2
调试台打印的信息如下:
errCode: -1
errMsg: 没有该用户!
Process finished with exit code 0
由于自定义异常错误是一个类,继承了ValueError,在PyCharm环境下Ctrl+鼠标左键跳转到ValueError查看,ValueError代码如下:
class ValueError(Exception): """ Inappropriate argument value (of correct type). """ def __init__(self, *args, **kwargs): # real signature unknown pass @staticmethod # known case of __new__ def __new__(*args, **kwargs): # real signature unknown """ Create and return a new object. See help(type) for accurate signature. """ pass
初始化参数是*args和**kwagrs,所以except MyError as msg之后,msg.args[0]就是raise MyError(MyError.ERROR[0], MyError.ERROR[1])的第一个参数MyError.ERROR[0],msg.args[1]为第二个参数MyError.ERROR[1]。
相关文章推荐
- Python爬虫
- Python maplotlib 可视化
- 以写代学:python 模块简介&输出用户指定位数密码的脚本
- 详细介绍windows下使用python pylot进行网站压力测试
- python装饰器初探
- python ConfigParser
- Python黑帽编程1.2 基于VS Code构建Python开发环境
- SyntaxError: Non-ASCII character '\xe4' in file
- Python图形界面编程---Tkinter模块使用
- wxpython 编程触发菜单或按钮事件
- [numpy]split()和array_split()
- Python 黑帽编程大纲(变化中)
- 李航《统计学习方法》第四章——用Python实现朴素贝叶斯分类器(MNIST数据集)
- 【python-mysql】在ubuntu下安装python-mysql环境
- Python图形界面编程---Tkinter模块基础
- python 类成员变量
- Python爬虫----实例: 抓取百度百科Python词条相关1000个页面数据
- python学习第八天 -- 迭代
- Python 验证码识别
- Python字符编码详解