Невозможно бросить ожидание в симуляторе - PullRequest
0 голосов
/ 05 марта 2019

Я пытаюсь добавить переменную в моем feign.builder, но он продолжает говорить, что

Необработанные исключения: java.net.URISyntaxException, java.io.IOException

бросать исключения не работает и не ловить идеи, как это исправить?Feign Builder:

 Interface.DeleteComment deleteComment = Feign.builder()
                                              .client(new OkHttpClient())
                                              .encoder(new JacksonEncoder())
                                              .decoder(new JacksonDecoder())
                                              .logger(new Slf4jLogger(Interface.DeleteComment.class))
                                              .logLevel(Logger.Level.FULL)
                                              .target(Interface.DeleteComment.class, 
                                                      "http://localhost:3000/comments/" + networkConfigurationProperties.id());

NetworkConfigurationProperties

public class NetworkConfigurationProperties  {
    public String id() throws URISyntaxException,IOException {
        final URI uri = new URI("http://localhost:3000/comments/");
        String path = uri.getPath();
        String idStr = path.substring(path.lastIndexOf('/') + 1);
        return idStr;
    }
}

Ответы [ 2 ]

0 голосов
/ 05 марта 2019

Добавьте блок try catch в ваш метод id ().Ваш метод id () генерирует два проверенных исключения, которые должны быть перехвачены.Попробуйте что-то вроде этого:

public class NetworkConfigurationProperties  {
    public String id() {
         try {
            final URI uri = new URI("http://localhost:3000/comments/");
            String path = uri.getPath();
            String idStr = path.substring(path.lastIndexOf('/') + 1);
            return idStr;
         } catch (URISyntaxException|IOException e) {
            return null;
         }
    }
}
0 голосов
/ 05 марта 2019

Ваш метод id() может выдавать эти исключения, то есть они должны обрабатываться (где-то).

В вашем методе вызова вы не можете просто сказать:

public void callId() {
Interface.DeleteComment deleteComment = Feign.builder()
                    .client(new OkHttpClient())
                    .encoder(new JacksonEncoder())
                    .decoder(new JacksonDecoder())
                    .logger(new Slf4jLogger(Interface.DeleteComment.class))
                    .logLevel(Logger.Level.FULL)
                    .target(Interface.DeleteComment.class, "http://localhost:3000/comments/" + networkConfigurationProperties.id());
}

потому что вы не обрабатываете исключения.Вам нужно будет либо перехватить их:

public void callId() {
  try{
    Interface.DeleteComment deleteComment = Feign.builder()
                        .client(new OkHttpClient())
                        .encoder(new JacksonEncoder())
                        .decoder(new JacksonDecoder())
                        .logger(new Slf4jLogger(Interface.DeleteComment.class))
                        .logLevel(Logger.Level.FULL)
                        .target(Interface.DeleteComment.class, "http://localhost:3000/comments/" + networkConfigurationProperties.id());
    } catch(Exception e) {
    e.printStackTrace(); //or similar
   }
    }

, либо сообщить методам, вызывающим этот метод, о том, что они ожидают возможные исключения, распространяя их

public void callId() throws URISyntaxException,IOException {
Interface.DeleteComment deleteComment = Feign.builder()
                    .client(new OkHttpClient())
                    .encoder(new JacksonEncoder())
                    .decoder(new JacksonDecoder())
                    .logger(new Slf4jLogger(Interface.DeleteComment.class))
                    .logLevel(Logger.Level.FULL)
                    .target(Interface.DeleteComment.class, "http://localhost:3000/comments/" + networkConfigurationProperties.id());
}
...