GCP Python 的基本例外 Class 库:"google-api-python-client"

Base Exception Class for GCP Python Library: "google-api-python-client"

我正在使用 google-api-python-客户端库,由 Google Cloud 提供。 我正在使用它的很多方法来操作计算引擎资源(磁盘、实例、快照等) 但是在进行大量操作时,为了更好地处理和弹性代码,我应该添加 try..catch 块并且在添加块时,我意识到 Google-Cloud 不提供任何基本异常 class.

我想到的最坏情况是:

try:
 <code>
except:
 <prompt error>

但我认为这不是正确的做法。

我错过了什么吗?或者 GCP-Library 不提供异常处理程序?

简短的回答是 google-api-python-client 没有您要查找的异常 类。

google-api-python-client 库是受支持但未积极开发的较旧库。客户端调用代码都是自动生成的,它是许多 API 的非常通用的客户端,因此除了 network/transport/HTTP 层之外,没有在其中编码很多有意义的异常。

google-cloud-python 库是未来的开发,它是手写库和自动生成库的混合体。您可能会注意到,并非所有 API(包括计算)都已经存在,尽管它们会及时出现。新的自动生成代码将更多地关注惯用语言模式。

新库有一些更具体的例外,但如果您对如何进一步改进它有任何想法,我会将您的想法描述为 google-cloud-python 客户端库上的 Github 问题。

我浏览了 API returns 的文档和错误堆栈,并且我能够找出处理错误的方法来处理我们代码中的异常。

所以,不像你提到的,有可能..!

使用下面的方法,我们可以处理errors/exceptions.

import oauth2client.client
from googleapiclient import discovery
import googleapiclient.errors

#
# prepare credentials dictionary
#

try:
    compute = discovery.build(
            "compute", "v1", credentials=credentials)
except oauth2client.client.HttpAccessTokenRefreshError as e:
    print 'Error > ', e.message
except googleapiclient.errors.HttpError as e:
    reason = str(e._get_reason).split("\"")[-2]
    print 'Error > ', reason

希望对您有所帮助!

这两个是最常见的错误。可能还有其他错误,完全视情况而定。

但是所有的错误都应该出现在googleapiclient.errors class

@Bill Prin,请告诉我。