尝试 - Double Catch Statement Java

时间:2014-11-06 18:47:24

标签: java exception-handling

我遇到的问题是不理解我从try-catch语句中获取的错误消息,该语句有两次捕获。

我相信一切都是正确的,但是,我收到错误exception X is never thrown in body of corresponding try statement.

我认为代码是正确的,但两个catch子句都被拒绝了!

@PUT
@Path("{id}")
@Consumes("application/json")
public Response updatePerson(@PathParam("id") int id, String is) {
    try {
        Person person = readPerson(is);
        person.setId(id);
        Person locPerson = persons.get(id);
        if(locPerson == null){
            throw new WebApplicationException(Response.Status.NOT_FOUND);
        }
        persons.put(person.getId(), person);

        return Response.status(Response.Status.OK).build();
    } catch (JSONException e) {
        return Response.status(Response.Status.BAD_REQUEST).build();
    } catch (ParseException e) {
        return Response.status(Response.Status.BAD_REQUEST).build();
    }
}

2 个答案:

答案 0 :(得分:1)

如果你的try块中调用的方法都没有抛出JSONException或ParseException,你就不应该捕获这些异常。这就是exception X is never thrown in body of corresponding try statement的含义。

答案 1 :(得分:0)

这意味着您尝试捕获的异常永远不会被抛入try块中,因此将其置于catch语句中是多余的 - >警告为错误