Pregunta

¿Hay algún tipo de excepción en Java para coger un objeto no válido Fecha? Estoy tratando de usarlo en el siguiente método, pero no sé qué tipo de excepción a buscar. ¿Es una ParseException.

public boolean setDate(Date date) {
        this.date = date;                
        return true;
    }
¿Fue útil?

Solución

En el método que proporciona, no hay manera de capturar una excepción, ya que ninguno será lanzada por la simple asignación. Todo lo que se puede hacer es tal vez el siguiente cambio:

if(date == null) return false;

Pero incluso eso no es gracioso. Es posible que desee hacer algo con this.date o lanzar una excepción a si ese es el comportamiento deseado.

Lo que realmente está buscando es o bien:

  1. ParseException - tirado por un objeto DateFormat cuando intenta parse(), que pasaría antes de que su método set
  2. IllegalArgumentException - lanzada por un constructor SimpleDateFormat, otra vez que iba a suceder antes de que su método set. Indica que ya ha proporcionado una cadena de formato no válido.

Lo que quiere coger uno de los (probablemente # 1). Pero tiene que suceder antes de su llamada al método. Una vez que tenga un objeto Date, o bien es null o válida.

Otros consejos

Esto podría no estar relacionado con la pregunta original. Pero hay que notar el nombre del método, que es setDate(). ¿Cree que suena como que va a devolver algo? O si se puede, a continuación, ¿cree que es una buena idea para devolver una boolean allí? OMI, hacer algo como esto,

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

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

En este método, no hay necesidad de preocuparse por una excepción. La fecha ya se ha creado en el momento de entrar en este método. Si está analizando una fecha, tendría que hacerlo fuera de este código. Lo mejor que podría hacer es asegurarse de que la fecha no es nulo.

Depende de lo que entendemos por una fecha no válida. ¿Se refiere a darnos una firma del método que se parecía más a esto?

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

De lo contrario, ya que los otros han dicho que el simple acto de asignar una fecha objeto de Java a un campo no debe ser excepcional, ya que es ya sea una instancia de fecha ya, o nulo.

Si usted está tratando de analizar una cadena en una mirada java.util.Date, DateFormat , FastDateFormat (Apache, seguro de rosca), o Tiempo Joda.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top