Question

Y at-il une sorte d'exception en Java pour attraper un objet Date non valide? Je suis en train de l'utiliser dans la méthode suivante, mais je ne sais pas quel type d'exception à rechercher. Est-ce un ParseException.

public boolean setDate(Date date) {
        this.date = date;                
        return true;
    }
Était-ce utile?

La solution

Dans la méthode que vous fournissez, il n'y a pas moyen d'attraper une exception, car aucun sera jeté par la simple affectation. Tout ce que vous pouvez faire est peut-être le changement ci-dessous:

if(date == null) return false;

Mais ce n'est pas gracieux. Vous voudrez peut-être faire quelque chose avec this.date ou jeter une exception en si c'est le comportement souhaité.

Ce que vous cherchez vraiment est:

  1. ParseException - jeté par un objet DateFormat lorsqu'il tente de parse(), ce qui se passerait avant votre méthode set
  2. IllegalArgumentException - lancée par un constructeur de SimpleDateFormat, encore une fois, il se passerait-il avant votre méthode set. Indique que vous avez fourni une chaîne de format non valide.

Vous voudriez attraper un de ces (probablement # 1). Mais il doit se produire avant votre appel de méthode . Une fois que vous avez un objet Date, il est soit null ou valide.

Autres conseils

Cela pourrait ne pas être lié à la question initiale. Mais vous devez noter le nom de la méthode, qui est setDate(). Pensez-vous que cela ressemble à quelque chose il retournera? Ou si elle peut penser, alors vous une bonne idée de retourner un boolean là? OMI, cela quelque chose comme,

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

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

Dans cette méthode, il n'y a pas besoin de se soucier d'une exception. La date est déjà créée au moment où vous entrez dans cette méthode. Si vous analysez une date, il aurait fait en dehors de ce code. Le mieux que vous pouvez faire est de vous que la date est non nulle.

Cela dépend de ce que vous entendez par une date non valide. Vouliez-vous dire pour nous donner une signature de la méthode qui ressemblait plus à ce sujet?

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

Dans le cas contraire, comme les autres ont déclaré le simple fait d'assigner un objet date Java à un champ ne devrait pas être exceptionnel car il est soit une instance de date déjà, ou nulle.

Si vous essayez juste d'analyser une chaîne en un java.util.Date, regardez DateFormat , FastDateFormat (apache, coffre-fort de fil) ou Joda Time.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top