2010-03-25 4 views
0

Есть ли какое-то исключение в Java, чтобы поймать недопустимый объект Date? Я пытаюсь использовать его в следующем методе, но я не знаю, какой тип исключения искать. Это ParseException.Управление обработкой исключений Java Date try catch

public boolean setDate(Date date) { 
     this.date = date;     
     return true; 
    } 

ответ

3

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

if(date == null) return false; 

Но даже это не изящно. Вы можете что-то сделать с this.date или выбросить исключение, если это желаемое поведение.

То, что вы действительно ищете либо:

  1. ParseException - брошенная DateFormat объекта, когда он пытается parse(), что случилось бы, прежде чем ваш метод набора
  2. IllegalArgumentException - брошенной SimpleDateFormat конструктора, снова это произойдет до вашего установленного метода. Указывает, что вы указали неверную строку формата.

Вы хотите поймать один из них (возможно, № 1). Но это должно произойти до ваш вызов метода. Как только у вас есть объект Date, он либо null, либо действителен.

2

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

3

Это не может быть связано с исходным вопросом. Но вы должны заметить имя метода, которое равно setDate(). Как вы думаете, похоже, что что-то вернет? Или, если это возможно, то вы думаете, что это хорошая идея вернуть boolean? ИМО, сделайте что-нибудь подобное:

public void setDate(Date date) { 
    this.date = date;     
} 

public boolean isDateNull() { // or something 
    return this.date == null;     
} 
2

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

public void setDate(String date) throws ParseException { 
    this.date = SomeDateFormat.getInstance().format(date); 
} 

В противном случае, как другие заявили, простой акт присвоения объекта даты Java в поле не должно быть исключительным, как это либо экземпляр Date уже, или нуль.

Если вы просто пытаетесь разобрать строку в java.util.Date, посмотрите на DateFormat, FastDateFormat (apache, thread safe) или Joda Time.

Смежные вопросы