Поймать исключение, выданное установщиком объекта - PullRequest
0 голосов
/ 01 июля 2018

Я пытаюсь отловить исключение, выданное установщиком сущности.

Допустим, у меня есть класс Player, и я хочу сохранить его прогресс и иметь

private float progess

и я хочу, чтобы оно было между 0 и 1. У меня есть сеттер

public void setProgress(float progress){
  if( progress < 0.0f || progress > 1.0f ) throw new IllegalArgumentException("progress parameter has to be between 0.0 and 0.1");
  this.progress = progress;
}

Где мне поймать это исключение? Я пытаюсь это использовать

   try{
    playerDao.save(player)
   }catch(IllegalArgumentException e){
    ... 
   }

Но это не улавливает. Где или как я могу поймать это, чтобы я мог войти и так далее? Спасибо за помощь.

1 Ответ

0 голосов
/ 01 июля 2018

Метод сеттера должен быть обернут в ваш блок try-catch, чтобы исключение было выброшено / перехвачено. Например:

float progress = 2F; // example to throw the exception

try 
    setProgress(progress);
} catch (IllegalArgumentException e) {
    // if you're here, progress < 0 or progress > 1
    // TODO handle the exception
}

Тем не менее, какой вариант использования для этого? Было бы намного лучше выполнить рефакторинг вашего кода так, чтобы метод setProgress мог получить только действительный аргумент. Например:

float progress = 2F;

if (isValid(progress)) {
    setProgress(progress);
} else {
    // TODO show the user a message, etc.
}

...

private void isValid(float progress) {
    return (progress >= 0F && progress <= 1F);
}

private void setProgress(float progress) {
    this.progress = progress;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...