首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何捕获Amazon AWS错误Android

如何捕获Amazon AWS错误Android
EN

Stack Overflow用户
提问于 2012-06-10 01:59:48
回答 1查看 990关注 0票数 2

我经常收到错误报告(来自用户),例如:

原因:状态代码: 400,亚马逊网络服务: AmazonSimpleDB,亚马逊网络服务请求ID: c5cb109d-bbff-fcea-bc0d-0cb60ff8f6af,亚马逊网络服务错误代码: RequestExpired,亚马逊网络服务错误消息:请求已过期。时间戳日期为2012-06-06T13:19:59.415Z。当前日期为2012-06-06T14:20:03Z

很明显,这是因为用户设置了错误的时区或其他设置?无论如何,我想要捕获这个特定的错误,并发布一条消息给用户,要求他们检查他们的时区设置,但我找不到这样做的方法。如果我捕捉到AmazonServiceException,则错误显示为null。

如何根据状态码甚至错误码来捕获错误?我尝试的当前代码如下所示:

代码语言:javascript
复制
try {
        dostuff()
    } catch (IOException e) {
        updateAWS("DownloadErrors");
        return "filenotfound";
    } catch (AmazonServiceException e) {
        return "downloadfail";
    }

但是,AmazonServiceException e总是空的,所以我不能从中提取任何信息。

其他代码:

代码语言:javascript
复制
private void doStuff() throws IOException, AmazonServiceException{ 
//code here
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-12-01 11:45:34

显然这就是我所需要的。SDb跟踪"RequestExpired“,S3使用"RequestTimeTooSkewed”

此外,这似乎是因为系统时间与AWS服务器的时间相差>15分钟。我给用户写了个便条,让他们检查时间,如果可能的话,使用“自动”日期/时间。我自己测试了它,并重现了错误和解决方案。

代码语言:javascript
复制
try {
        result = doOperations();
    } catch (AmazonServiceException e) {
        if (e.getErrorCode().equals("RequestExpired") || e.getErrorCode().equals("RequestTimeTooSkewed")) {
            result = "timestamp";
        }
        }
    return result;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10963292

复制
相关文章

相似问题

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