首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何捕获错误(Smartsheet API Python SDK)

如何捕获错误(Smartsheet API Python SDK)
EN

Stack Overflow用户
提问于 2018-06-28 16:54:23
回答 2查看 641关注 0票数 0

我缺少基本的知识。如何“正确”捕获API返回的错误。

我使用的是Python 3.+

如果我传入了错误的工作表ID

代码语言:javascript
复制
        try:
            update_sht = SmSh.Sheets.get_sheet(dd_id)
            print("OK?:", update_sht, flush=True)
        except:
            print("Error Print:\n", update_sht)

我得到了这个响应(在IPython控制台中)

代码语言:javascript
复制
Response: {
status: 404 Not Found
content: {
{
    "errorCode": 1006,
    "message": "Not Found",
    "refId": "jod4cgoou0sw"
}
}
OK?: {"result": {"code": 1006, "errorCode": 1006, "message": "Not Found",
"name": "ApiError", "recommendation": "Do not retry without fixing the
problem. ", "refId": "jod4cgoou0sw", "shouldRetry": false, 
"statusCode": 404}}

虽然它返回一个错误响应,但根据try/except,它并不是一个异常。

在这一点上,我想退出我所在的循环,而不是继续到其他代码行,如下所示

代码语言:javascript
复制
        for col in update_sht.columns:

这确实会给出导致程序失败的错误。

代码语言:javascript
复制
Traceback (most recent call last):

  File "<ipython-input-195-85dde6ec7071>", line 1, in <module>
    xxx(debug=False)

  File "<ipython-input-194-0b889c817b08>", line 75, in xxx
    for col in update_sht.columns:

AttributeError: 'Error' object has no attribute 'columns'

我在工作表上做了不止一件事,如果我找到了它,我不希望在错误代码行周围有try/except (我夸大了),除非我需要它们来处理其他错误。

我知道/希望这比我一直试图做到的要容易,但正如我开始时所说的那样,我遗漏了一些基本的东西。

-Craig

-更新-我在绕圈子。

如果errors_as_exceptions为真,则此

代码语言:javascript
复制
update_sht = SmSh.Sheets.get_sheet(dd_id)

提升和异常,但是

代码语言:javascript
复制
print(update_sht)

或者任何类似的东西都会显示对象中的前一个good值。如何确定状态代码和错误代码,以便采取适当的操作?我试过的都不管用。

如果errors_as_exceptions为false,则此

代码语言:javascript
复制
update_sht = SmSh.Sheets.get_sheet(dd_id)
    print(update_sht.result.code)

给我错误代码,但只有在有错误的时候...因此,我需要捕获没有错误时发生的错误。

如果我引发错误(errors_as_exceptions=True),我如何确定状态代码和错误代码,如果我没有引发错误,我如何执行相同的操作?我想防止我的代码失败,并为用户提供关于需要修复的有用信息。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-06-29 05:26:59

如果您设置了ss.errors_as_exceptions(),并且您的代码如下所示

代码语言:javascript
复制
try:
    my_sheet = ss.Sheets.get_sheet(sheet_ID)
    print(my_sheet)
except Exception as e: 
    print(e.message)

结果将类似于下面的1006: Not Found。因此,异常消息看起来是errorCode:message

票数 1
EN

Stack Overflow用户

发布于 2018-06-28 23:44:08

如果您希望Python SDK为API错误引发异常,请在客户端对象上调用errors_as_exceptions方法,例如

代码语言:javascript
复制
ss = smartsheet.Smartsheet()
ss.errors_as_exceptions()
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51078622

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档