Pergunta

Existe algum tipo de exceção em Java para capturar um objeto de data inválido? Estou tentando usá -lo no método a seguir, mas não sei que tipo de exceção procurar. É uma parseexception.

public boolean setDate(Date date) {
        this.date = date;                
        return true;
    }
Foi útil?

Solução

No método que você fornece, não há como pegar uma exceção, porque nenhum será jogado pela tarefa simples. Tudo o que você pode fazer é talvez a mudança abaixo:

if(date == null) return false;

Mas mesmo isso não é gracioso. Você pode querer fazer algo com this.date Ou faça uma exceção se esse for o comportamento desejado.

O que você está realmente procurando é:

  1. ParseException - jogado por um DateFormat objeto quando tenta parse(), o que aconteceria antes do seu método definido
  2. IllegalArgumentException - jogado por um SimpleDateFormat Construtor, novamente isso aconteceria antes do seu método definido. Indica que você forneceu uma sequência de formato inválida.

Você gostaria de pegar um desses (provavelmente nº 1). Mas isso tem que acontecer antes da sua chamada de método. Depois de ter um Date objeto, é null ou válido.

Outras dicas

Isso pode não estar relacionado à pergunta original. Mas você deve notar o nome do método, que é setDate(). Você acha que parece que vai devolver alguma coisa? Ou, se for, então você acha que é uma boa ideia devolver um boolean lá? IMO, faça algo assim,

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

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

Neste método, não há necessidade de se preocupar com uma exceção. A data já foi criada quando você entra nesse método. Se você estiver analisando uma data, seria feito fora deste código. O melhor que você pode fazer é garantir que a data não seja nula.

Depende do que você quer dizer com uma data inválida. Você quis nos dar uma assinatura de método que parecia mais assim?

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

Caso contrário, como os outros declararam o simples ato de atribuir um objeto de data java a um campo não deve ser excepcional, pois já é uma instância de data ou nulo.

Se você está apenas tentando analisar uma corda em um java.util.date, olhe para Formato de data, FastDateFormat (Apache, Thread Safe) ou Joda Time.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top