Frage

Gibt es irgendeine Art von exception in Java zu fangen, ein ungültiges Datum-Objekt?Ich bin versucht, es zu benutzen in der folgenden Methode, aber ich weiß nicht, welche Art von Ausnahme zu suchen.Ist es eine ParseException.

public boolean setDate(Date date) {
        this.date = date;                
        return true;
    }
War es hilfreich?

Lösung

Bei dem Verfahren Sie zur Verfügung stellen, gibt es keine Möglichkeit, eine Ausnahme zu fangen, denn keiner wird durch die einfache Zuordnung geworfen werden. Alles, was Sie ist vielleicht die unten ändern können:

if(date == null) return false;

Aber auch das ist nicht anmutig. Vielleicht möchten Sie etwas mit this.date tun oder eine Ausnahme auslösen, wenn das das gewünschte Verhalten ist.

Was Sie suchen, ist wirklich entweder:

  1. ParseException - geworfen von einem DateFormat Objekt, wenn es um parse() versucht, die vor dem eingestellten Verfahren geschehen würden,
  2. IllegalArgumentException - geworfen von einem SimpleDateFormat Konstruktor, wieder wäre es vor dem eingestellten Verfahren geschehen. Gibt Sie einen ungültigen Format-String zur Verfügung gestellt.

Sie würden wollen, einer von denen fangen (wahrscheinlich # 1). Aber es muss passieren, vor Ihren Methodenaufruf. Sobald Sie ein Date Objekt haben, ist es entweder null oder gültig sind.

Andere Tipps

Dies könnte nicht auf die ursprüngliche Frage bezogen werden. Aber Sie müssen den Namen der Methode feststellen, die setDate() ist. Glaubst du, es klingt wie es etwas zurück? Oder wenn es kann, dann denken Sie, es ist eine gute Idee, einen boolean dorthin zurückzukehren? IMO, etwas tun,

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

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

In diesem Verfahren gibt es keine Notwendigkeit, über eine Ausnahme zu kümmern. Das Datum wird bereits durch die Zeit, die Sie in dieser Methode erhalten erstellt. Wenn Sie ein Datum parsen, wäre es getan außerhalb dieses Codes haben. Das Beste, was Sie tun können, ist sicherzustellen, dass das Datum nicht null ist.

Es hängt davon ab, was Sie bedeuten, indem Sie ein ungültiges Datum.Meinten Sie geben uns eine Methode, die Signatur, der eher so aussah?

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

Ansonsten, wie die anderen, erklärte der einfache Akt der Zuweisung von einer Java-date-Objekt für ein Feld sollte nicht als außergewöhnlich, da er entweder eine Instanz des Date schon, oder null.

Wenn Sie nur versuchen, eine Zeichenfolge zu analysieren, die in einem java.util.Datum, anschauen DateFormat, FastDateFormat (apache, thread-sicher), oder Joda Zeit.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top