Analisando Datas Ambíguas em Java

Existe alguma maneira em Java para adivinhar o formato de data quando não é explicitamente definido?

Por exemplo, um usuário digita 11Mar09 ou 11-09-2009 ou 11/09/2009 ou 11-09, qual é a melhor maneira de analisar isso para um objeto Date sem um monte de try catch ou gerando um erro?

questionAnswers(4)

yourAnswerToTheQuestion