如何捕获亚马逊AWS错误Android

时间:2012-06-09 17:59:48

标签: android exception amazon-web-services amazon amazon-simpledb

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

引起:状态码:400,AWS服务:AmazonSimpleDB,AWS请求ID:c5cb109d-bbff-fcea-bc0d-0cb60ff8f6af,AWS错误代码:RequestExpired,AWS错误消息:请求已过期。时间戳日期是2012-06-06T13:19:59.415Z。现在的日期是2012-06-06T14:20:03Z

显然这是因为用户有错误的时区或设置了什么?无论如何,我想抓住这个特殊的错误,并向用户发送一条消息,要求他们检查他们的时区设置但是我找不到办法。如果我捕获AmazonServiceException,则错误显示为null。

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

try {
        dostuff()
    } catch (IOException e) {
        updateAWS("DownloadErrors");
        return "filenotfound";
    } catch (AmazonServiceException e) {
        return "downloadfail";
    }

但是,AmazonServiceException e始终为null,因此我无法从中提取任何信息。

其他代码:

private void doStuff() throws IOException, AmazonServiceException{ 
//code here
}

1 个答案:

答案 0 :(得分:0)

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

此外,这似乎正在发生,因为系统时间与AWS服务器的时间差不超过15分钟。我给用户留了一张便条,检查他们的时间并尽可能使用“自动”日期/时间。自己测试并重现错误和解决方案。

try {
        result = doOperations();
    } catch (AmazonServiceException e) {
        if (e.getErrorCode().equals("RequestExpired") || e.getErrorCode().equals("RequestTimeTooSkewed")) {
            result = "timestamp";
        }
        }
    return result;
}