Java-Datum Ausnahmebehandlung try catch
-
22-09-2019 - |
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;
}
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:
-
ParseException
- geworfen von einemDateFormat
Objekt, wenn es umparse()
versucht, die vor dem eingestellten Verfahren geschehen würden, -
IllegalArgumentException
- geworfen von einemSimpleDateFormat
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.