Python 条件异常消息

Aut*_*tic 4 python

我正在使用 Python 2.7 并且是自定义异常的新手。我已经尽可能多地阅读了它们,但在这个特定问题上没有找到太多帮助。

我正在调用一个 API,它返回一个带有大多数响应的状态代码。例如,0 是“成功”,1 是“参数数量错误”,2 是“缺少参数”等。

收到回复后,我会检查状态以确保在出现问题时不会继续。我一直在提出一个通用的异常,例如:

if response.get('status') != 0:
    print 'Error: Server returned status code %s' % response.get('status')
    raise Exception
Run Code Online (Sandbox Code Playgroud)

如何创建自定义异常来查找状态代码并将其作为异常错误消息的一部分返回?我设想如下:

if response.get('status') != 0:
    raise myException(response.get('status'))
Run Code Online (Sandbox Code Playgroud)

Jam*_*lls 6

因此,您可以通过子类化来定义自定义异常类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'))
Run Code Online (Sandbox Code Playgroud)

通过Exception对所有默认/内置异常继承的标准类进行子类化,您还可以很容易地捕获自定义异常:

try:
    # ...
except APIError as error:
    # ...
Run Code Online (Sandbox Code Playgroud)

请参阅:用户定义的异常