Java Android无法捕获RESTful异常

Java Android无法捕获RESTful异常,java,android,spring,jersey,android-annotations,Java,Android,Spring,Jersey,Android Annotations,我有一个Android应用程序,它使用AndroidAnnotations和SpringREST模板使用RESTful服务 服务正常使用,但当RESTful服务抛出未处理的异常时,Android应用程序停止运行并关闭,即使try-catch包含服务使用。 android应用程序: 01-11 00:44:59.046: E/AndroidRuntime(5291): FATAL EXCEPTION: pool-1-thread-2 01-11 00:44:59.046: E/AndroidRun

我有一个Android应用程序,它使用AndroidAnnotations和SpringREST模板使用RESTful服务

服务正常使用,但当RESTful服务抛出未处理的异常时,Android应用程序停止运行并关闭,即使try-catch包含服务使用。

android应用程序:

01-11 00:44:59.046: E/AndroidRuntime(5291): FATAL EXCEPTION: pool-1-thread-2
01-11 00:44:59.046: E/AndroidRuntime(5291): org.springframework.web.client.HttpServerErrorException: 500 Internal Server Error
01-11 00:44:59.046: E/AndroidRuntime(5291): at org.springframework.web.client.DefaultResponseErrorHandler.handleError(DefaultResponseErrorHandler.java:78)
01-11 00:44:59.046: E/AndroidRuntime(5291): at org.springframework.web.client.RestTemplate.handleResponseError(RestTemplate.java:524)
restful应用程序:

01-11 00:44:59.046: E/AndroidRuntime(5291): FATAL EXCEPTION: pool-1-thread-2
01-11 00:44:59.046: E/AndroidRuntime(5291): org.springframework.web.client.HttpServerErrorException: 500 Internal Server Error
01-11 00:44:59.046: E/AndroidRuntime(5291): at org.springframework.web.client.DefaultResponseErrorHandler.handleError(DefaultResponseErrorHandler.java:78)
01-11 00:44:59.046: E/AndroidRuntime(5291): at org.springframework.web.client.RestTemplate.handleResponseError(RestTemplate.java:524)
我知道RESTful服务中没有处理异常,但我希望我的Android应用程序能够捕获此类问题并向用户显示友好消息。 但即使使用try-catch,也会出现以下错误:

01-11 00:44:59.046: E/AndroidRuntime(5291): FATAL EXCEPTION: pool-1-thread-2
01-11 00:44:59.046: E/AndroidRuntime(5291): org.springframework.web.client.HttpServerErrorException: 500 Internal Server Error
01-11 00:44:59.046: E/AndroidRuntime(5291): at org.springframework.web.client.DefaultResponseErrorHandler.handleError(DefaultResponseErrorHandler.java:78)
01-11 00:44:59.046: E/AndroidRuntime(5291): at org.springframework.web.client.RestTemplate.handleResponseError(RestTemplate.java:524)
Git repository如果他们想查看整个项目:


已经好了,谢谢

如果出现服务器异常,向用户显示友好消息的方法是从Jersey返回一个错误状态代码,然后Android端可以处理该响应,并执行向用户显示某个错误消息的操作

因此,您可以在Jersey代码中添加异常处理:

@POST
public Response insert(Student entity) {
    Response r;
    try {
        this.getService().insert(entity); // Throw the exception here!
        r = Response.ok().entity(entity).build();
    } catch (Exception ex) {
        r = Response.status(401).entity("Got some errors due to ...!").build();
    }
    return r;
}
在Android端,您可以捕获错误实体字符串
“由于…!”获取了一些错误。
,然后您可以向用户显示关于发生了什么的适当消息。例如:

安卓端:

HttpClient client = new DefaultHttpClient();
HttpResponse response = client.execute(post);
String responseText = EntityUtils.toString(response.getEntity());

这将确保在REST异常的情况下,Android客户端可以处理错误并向用户显示消息。

谢谢@tonga,我的问题发生是因为我的方法
insert
有注释@Background,而这忽略了我的trycath块。