JAX-RS / Jersey ¿cómo personalizar el manejo de errores?

Estoy aprendiendo JAX-RS (también conocido como JSR-311) usando Jersey. He creado con éxito un recurso raíz y estoy jugando con los parámetros:

@Path("/hello")
public class HelloWorldResource {

    @GET
    @Produces("text/html")
    public String get(
        @QueryParam("name") String name,
        @QueryParam("birthDate") Date birthDate) {

         // Return a greeting with the name and age
    }
}

Esto funciona muy bien y maneja cualquier formato en el entorno local actual que entiende el constructor Fecha (Cadena) (como AAAA / mm / dd y mm / dd / AAAA). Pero si proporciono un valor que no es válido o no se entiende, obtengo una respuesta 404.

Por ejemplo

GET /hello?name=Mark&birthDate=X

404 Not Found

¿Cómo puedo personalizar este comportamiento? ¿Quizás un código de respuesta diferente (probablemente "400 Solicitud incorrecta")? ¿Qué pasa con el registro de un error? ¿Quizás agregar una descripción del problema ("formato de fecha incorrecta") en un encabezado personalizado para ayudar a solucionar problemas? ¿O devolver una respuesta de error completa con detalles, junto con un código de estado 5xx?

Respuestas a la pregunta(8)

Su respuesta a la pregunta