我使用的是Python 2.7,并且不熟悉自定义异常。我已经尽可能多地阅读了这些内容,但却没有为这个特定问题找到很多帮助。
我正在调用一个返回大多数响应的状态代码的API。例如,0是'成功',1是'错误的参数数量,2是'缺少参数'等等。
当我收到回复时,我会检查状态,以确保在出现问题时我不会继续。我一直在提出一般性例外,例如:
if response.get('status') != 0:
print 'Error: Server returned status code %s' % response.get('status')
raise Exception
如何创建查找状态代码的自定义异常并将其作为异常错误消息的一部分返回?我想象的是:
if response.get('status') != 0:
raise myException(response.get('status'))
答案 0 :(得分:2)
因此,您可以通过对Exception
进行子类化来定义自定义异常类:
示例:强>
class APIError(Exception):
"""An API Error Exception"""
def __init__(self, status):
self.status = status
def __str__(self):
return "APIError: status={}".format(self.status)
if response.get('status') != 0:
raise APIError(response.get('status'))
通过对所有默认/内置异常继承的标准Exception
类进行子类化,也可以很容易地捕获自定义异常:
try:
# ...
except APIError as error:
# ...
答案 1 :(得分:1)
声明自定义异常就像声明一个常规类一样。做这样的事情:
class MyException(Exception):
pass
if response.get('status') != 0:
raise MyException(response.get('status'))
因此,如果response.get('status')
的结果为1,您将获得MyException: Wrong Number of Parameters
。
另一个较短的版本可以使用,但它不允许您自己命名该异常。
if response.get('status') != 0:
raise Exception(response.get('status'))
由于Exception
是内置Python类,因此会引发错误。同样,如果response.get('status')
为1,您将获得Exception: Wrong Number of Parameters
。