Либо повторно прервите этот метод, либо повторно создайте «Проблему InterruptedException в сонарном

В одном из моих методов возникает прерванное исключение и исключение выполнения. Я попробовал поймать вот так.

try{

  //my code
}catch(InterruptedException|ExecutionException e)

  Log.error(" logging it");
  throw new MonitoringException("it failed" , e)


//monitoringexception extends RunTimeException

Также в моем методе я ставлю броски InterruptedException,ExecutionException

Я получаю ниже критической ошибки в гидролокаторе - либо повторно прервите этот метод, либо повторно введите "InterruptedException"

Кто-нибудь знает, как это исправить.

Пожалуйста, помогите немедленно.


person Kunal Raunak    schedule 30.01.2019    source источник
comment
См. stackoverflow.com/questions/3976344/   -  person user7294900    schedule 30.01.2019


Ответы (1)


Для «повторного прерывания» в качестве наилучшей практики:

try{
    //some code
} catch (InterruptedException ie) {
    logger.error("InterruptedException: ", ie);
    Thread.currentThread().interrupt();
} catch (ExecutionException ee) {
    logger.error("ExecutionException: ",ee);
}

Обычно, когда поток прерывается, тот, кто прерывает поток, хочет, чтобы поток завершил то, что он делает в данный момент.

Однако убедитесь, что вы НЕ выполняете multi-catch:

catch (InterruptedException | ExecutionException e) {     
  logger.error("An error has occurred: ", e);
  Thread.currentThread().interrupt();
}

Мы не хотим, чтобы ExecutionException было «повторно прервано».

БОНУС:
Если вам интересно, вы можете поиграть с примерами здесь


Ура

person jumping_monkey    schedule 10.01.2020