我有以下引发异常的方法:
@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。
答案 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错误代码。