Fecha de Java excepción manipulación de las capturas intento
-
22-09-2019 - |
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;
}
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:
-
ParseException
- tirado por un objetoDateFormat
cuando intentaparse()
, que pasaría antes de que su método set -
IllegalArgumentException
- lanzada por un constructorSimpleDateFormat
, 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.