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?*/
   }
}

这就是我实际做的。此外,我有一些特定的异常,我还必须解析异常类型。这段代码很难看,这就是为什么我在寻找一个以漂亮的方式处理它的库。