Java 来自GoogleJsonResponseException的云端点异常映射程序
我想知道是否有一个库将从云端点抛出的异常映射回客户端的Java 来自GoogleJsonResponseException的云端点异常映射程序,java,android,google-app-engine,google-cloud-endpoints,Java,Android,Google App Engine,Google Cloud Endpoints,我想知道是否有一个库将从云端点抛出的异常映射回客户端的Exception对象。服务器端抛出的异常表示为GoogleJsonResponseException,并包含真正原因的完整包名: Caused by: com.google.api.client.googleapis.json.GoogleJsonResponseException: 401 Unauthorized { "code": 401, "errors": [ { "domain": "global",
Exception
对象。服务器端抛出的异常表示为GoogleJsonResponseException
,并包含真正原因的完整包名:
Caused by: com.google.api.client.googleapis.json.GoogleJsonResponseException: 401 Unauthorized
{
"code": 401,
"errors": [
{
"domain": "global",
"location": "Authorization",
"locationType": "header",
"message": "com.google.appengine.api.oauth.OAuthRequestException: User not logged in",
"reason": "required"
}
],
"message": "com.google.appengine.api.oauth.OAuthRequestException: User not logged in"
}
我希望编写如下的客户端代码:
try {
// call endpoint
} catch (OAuthRequestException e) {
// handle exception
}
我认为编写这样的库是可能的。使用代码处理器和注释,可以生成带有适当异常的客户端库。客户机代码可能与下面的代码不同,但与下面的代码类似:
try {
Library.mapExceptions(/* call endpoint */);
} catch (OAuthRequestException e) {
// handle exception
}
有什么东西可以做这项工作吗?我不知道这种类型的库,但你总是可以做:
try {
...
} catch (IOException) {
if (e instanceof GoogleJsonResponseException){
GoogleJsonResponseException ex = e;
switch (ex.getStatusCode()){
case 400:
...
case 404:
...
/*and the rest of codes available through endpoints*/
}
} else {
/*Manage other exceptions, maybe connection issues?*/
}
}
这就是我实际做的。此外,我有一些特定的异常,我还必须解析异常类型。这段代码很难看,这就是为什么我在寻找一个以漂亮的方式处理它的库。