Google Cloud Endpoints自定义例外

时间:2014-01-02 03:46:18

标签: java android exception google-cloud-endpoints

我有以下引发异常的方法:

@ApiMethod(name = "login")
public Profile getLogin(User user) throws UnauthorizedException {

    if (user == null){
        throw new UnauthorizedException("missing user");
    }

    ...
}

如何捕获android客户端AsyncTask中的错误?

protected Profile doInBackground(Void... unused) {

    Profile profile = null;
    try {
        profile = service.login().execute();

    } catch (Exception e) {
        Log.d("exception", e.getMessage(), e);
    }

    return profile;
}

上面没有捕获UnauthorizedException。

1 个答案:

答案 0 :(得分:0)

异常发生在App Engine服务器上,而不是在Android客户端上。然后,您必须找到一种方法向客户端发送消息,告诉他发生了什么异常。

在Cloud Endpoints和其他REST API中,这是使用HTTP结果代码和HTTP结果消息完成的。

Cloud Endpoints文档解释了how to match a custom exception to an HTTP result code。但是,在您的情况下,您还可以使用提供的com.google.api.server.spi.response.UnauthorizedException。这将转换为HTTP 401代码,这是HTTP表示"未授权&#34 ;.

的一种方式。

我从未在Android上尝试过Cloud Endpoints,但是如果你检查异常类,你肯定会发现有一种方法可以获取HTTP错误代码。