Java Data la gestione delle eccezioni try cattura
-
22-09-2019 - |
Domanda
C'è una sorta di eccezione in Java per la cattura di un oggetto data non valida? Sto cercando di usarla nel metodo seguito, ma non so che tipo di eccezione a cercare. Si tratta di un ParseException.
public boolean setDate(Date date) {
this.date = date;
return true;
}
Soluzione
Nel metodo da Lei forniti, non c'è modo per intercettare un'eccezione, perché nessuno sarà gettato dalla semplice assegnazione. Tutto quello che puoi fare è forse il cambiamento di seguito:
if(date == null) return false;
Ma anche questo non è grazioso. Si consiglia di fare qualcosa con this.date
o un'eccezione up se questo è il comportamento desiderato.
Quello che state veramente cercando è uno:
-
ParseException
- gettata da un oggettoDateFormat
quando tenta diparse()
, che sarebbe accaduto prima del tuo metodo set -
IllegalArgumentException
- lanciata da un costruttoreSimpleDateFormat
, ancora una volta che sarebbe successo prima del tuo metodo set. Indica che hai fornito una stringa di formato non valido.
Che ci si vuole prendere una di quelle (probabilmente # 1). Ma deve succedere prima il metodo di chiamata. Una volta ottenuto un oggetto Date
, è sia null
o validi.
Altri suggerimenti
Questo non potrebbe essere correlato alla domanda iniziale. Ma si deve notare il nome del metodo, che è setDate()
. Pensi che suona come esso ritornerà qualcosa? Oppure, se può, allora pensi che è una buona idea per restituire un boolean
lì? IMO, fare qualcosa di simile,
public void setDate(Date date) {
this.date = date;
}
public boolean isDateNull() { // or something
return this.date == null;
}
In questo metodo, non c'è bisogno di preoccuparsi di un'eccezione. La data è già stato creato per il momento si entra in questo metodo. Se si analizza un appuntamento, lo avrebbe fatto al di fuori di questo codice. Il meglio che si possa fare è assicurarsi che la data non è nullo.
Dipende da cosa si intende per una data non valida. Forse cercavi a darci una firma del metodo che sembrava più così?
public void setDate(String date) throws ParseException {
this.date = SomeDateFormat.getInstance().format(date);
}
In caso contrario, come gli altri hanno dichiarato il semplice atto di assegnare una data oggetto Java per un campo non dovrebbe essere eccezionale in quanto è sia un esempio di Data già, o nullo.
Se si sta solo cercando di analizzare una stringa in un java.util.Date, guarda DateFormat , FastDateFormat (apache, thread-safe), o Joda Time.