используя вложенный оператор try в Java - PullRequest
1 голос
/ 29 февраля 2012

У меня есть некоторые проблемы с вложенными операторами try в java, и меня просят использовать вложенные операторы try вместо if ()

. Вот некоторая часть кода, в которой мне нужно использовать вложенный оператор try.

 public Date subtractYear() throws Exception
  {
    if (day == 29 && month == 2)
      return new Date(28, month, year - 1);
    else
      return new Date(day, month, year - 1);
  }

1 Ответ

4 голосов
/ 29 февраля 2012

Приведенный выше код неверен в лучшем случае и опасен в худшем.Существуют причины, по которым существуют классы Date и Calendar.Управление високосными годами является одним из них.

Приведенный выше код должен видеть продуктивность только в тех случаях, когда вы действительно понимаете, что делаете, и вам необходимо добиться производительности с помощью этих средств.Ваша лучшая ставка выглядит следующим образом:

public Date subtractYear() {
  final Calendar c = new Calendar();
  c.set(year, month, day); // set your class's "current" date
  c.add(Calendar.YEAR, -1); // remove 1 year
  return c.getTime(); // get the Date object back from the Calendar
}

В качестве дополнительного комментария, использование блоков try-catch для обработки нормального выполнения программы, как правило, является плохим способом обработки вещей, которые вы ожидаете на обычной основе.Создание трассировки стека исключений является дорогостоящей операцией.

...