您的位置:首页 > 编程语言 > Python开发

Python-Python 3.x下自定义异常抛出和接收多个值的技巧

2016-07-20 16:04 495 查看
在使用Python的时候,有时候想自己自定义异常错误,同时抛出多个参数,比如对数据库查找一个用户,如果没有找到,返回

{"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]。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: