0

之前有人问过这个问题,但答案是建议print哪个不好。

Python:没有返回时处理 JSON 解码错误

鉴于这种:

class BitbucketError(Exception):
    pass

try:
    response = requests.get('https://bitbucket.org/.......')
    return response.json()['data']

# because JSONDecoderError inherits from ValueError
except (json.JSONDecoderError, ValueError) as e: 
    raise BitbucketError(response.status_code)

没关系。但是如果我要在另一个项目中使用这个模块,我会在哪里

# save to dabase, example 1
raw_code = mymodule.bitbucket.file(...)
db.save(raw_code)

# return json back to user (api server, example 2)
raw_code = mymodule.bitbucket.file(...)
return {'data': raw_code}

我确定我想在上面的代码段中捕获异常。但问题是,我应该让原始的传播或自己定义一个例外吗?

我正在尝试了解如何正确处理错误,因为错误可能是由于 404、405 甚至 500 造成的。

希望这个问题有意义。

4

1 回答 1

1

这在很大程度上取决于第二段代码的上下文。例如,它是否用于您的应用程序中的一些内部自动化?在这种情况下,捕获异常并将类似于 Django 错误邮件(带有完整的堆栈跟踪、变量等)的电子邮件发送给组织中可以处理它的人可能是一个好主意。如果是针对某些最终用户应用程序,您可能想要记录错误(例如到邮件中)并给用户一些反馈。在这种情况下,您将希望以不同的方式处理不同的错误代码。

于 2013-03-10T09:28:23.697 回答