2014-11-06 4 views
-1

У меня возникла проблема не в понимании сообщения об ошибке, которое я получаю от своего оператора try-catch, который имеет два улова.Try - Double Catch Statement Java

Я считаю, что все правильно, однако, я получаю сообщение об ошибке exception X is never thrown in body of corresponding try statement.

Я считаю, что код правильный, но оба зажимными статей отклоняются!

@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(); 
    } 
} 
+0

Является ли это только Java, или JSON включительно ??? Добавьте правильные метки. –

+0

похоже, что либо jsonexception, либо parseexception никогда не будет бросаться внутри вашего блока try, поэтому я хочу, чтобы жаловаться на него. – DeepInJava

+0

. При появлении сообщения об ошибке НЕ редактируйте и не изменяйте его при публикации здесь. Вы заменили «X» на имя исключения, о котором компилятор жаловался. Это БОЛЬШОЙ нет-нет. Никогда не запутывайте важные части сообщений об ошибках (удаление чувствительного текста _you_ возникло в порядке, но это все). –

ответ

1

Если ни один из методов, вызываемых в вашей Ьгу блок может бросить JSONException или ParseException, вы не должны поймать этих исключений. Это то, что означает exception X is never thrown in body of corresponding try statement.

+0

Если с помощью дженериков или других средств метод может генерировать исключение, которое не задается с помощью предложения 'throws' (иногда может потребоваться при передаче метода другому методу, который его выполнит, и переданный метод может проверенное исключение, которое должно просачиваться через другое) есть ли «хороший» способ поймать такие исключения? – supercat

+0

@supercat Я не думаю, что метод может вызывать проверенное исключение, которое не указано в его предложении 'throws'. Если вы передадите метод другому методу, который его выполнит, метод, который выполняет переданный метод, должен обрабатывать все проверенные исключения, которые переданный метод может передать (или объявить их в своем предложении 'throws'). – Eran

0

это означает исключение вы пытаетесь поймать никогда не будет выброшено внутри блока попробовать, поэтому его излишний иметь его в заявлении поймать -> предупреждение как ошибка