Usando Joda Date & Time API para analizar múltiples formatos

Estoy analizando archivos de registro de terceros que contienen fecha / hora usando Joda. La fecha / hora está en uno de dos formatos diferentes, dependiendo de la antigüedad de los archivos de registro que estoy analizando.

Actualmente tengo un código como este:

try {
    return DateTimeFormat.forPattern("yyyy/MM/dd HH:mm:ss").parseDateTime(datePart);
} catch (IllegalArgumentException e) {
    return DateTimeFormat.forPattern("E, MMM dd, yyyy HH:mm").parseDateTime(datePart);
}

Esto funciona pero contraviene el consejo de Joshua Bloch de Effective Java 2nd Edition (Artículo 57: Use excepciones solo para condiciones excepcionales). También dificulta determinar si se produce una IllegalArgumentException debido a una fecha / hora arruinada en un archivo de registro.

¿Puedes sugerir un enfoque más agradable que no haga mal uso de las excepciones?

Respuestas a la pregunta(3)

Su respuesta a la pregunta