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;
    }
È stato utile?

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:

  1. ParseException - gettata da un oggetto DateFormat quando tenta di parse(), che sarebbe accaduto prima del tuo metodo set
  2. IllegalArgumentException - lanciata da un costruttore SimpleDateFormat, 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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top