Voici le code soumis :

import java.text.SimpleDateFormat;
import java.util.Date;
 
public class testDate
{
    public static void main(String[] args)
    {
	SimpleDateFormat sdf_l = new SimpleDateFormat("MM_dd_yy");
	String dateStr_l = "21_12_12";
	Date date_l = new Date();
	try
	    {
		date_l = sdf_l.parse(dateStr_l);
	    }
	catch(Exception ex_l)
	    {
		System.out.println("Blam !!");
	    }
	System.out.println("my date = " + date_l);
    }
}

Le but du code sus-cité est parser une chaîne de caractères pour créer un objet Date.
Sauf que c'est là qu'on voit qu'il a mal dormi[1], la chaîne de caractères ne respecte pas le format demandé et c'est là que cela devient drôle.
On pourrait s'attendre à un renvoi d'exception[2] et ce n'est pas ce qui se passe !! L'objet Date est bel et bien créé.
Vous vous demandez alors incrédule :

C'est quoi le 21ème mois de l'année ?

Et bien, notre petite classe sympa de formatage est incapable de tester ses bornes et donc de voir si le nombre dépasse la durée normale d'un mois.
Le 21ème mois de l'année, il s'agit en fait du 9ème de l'année suivante :D

Si j'étais pas cool, je donnerais maintenant un lien sur l'équivalent en Ada, genre un truc comme ça. Mais bon, il n' y a pas de système de formattage dans la norme, à part The format is "Year-Month-Day Hour:Minute:Second", where the Year is a 4-digit value, and all others are 2-digit values.
Ca donnerai presqu'envie d'en faire un équivalent... On verra si j'en ai le courage :D

Notes

[1] Rien n'expliquerait une telle faute d'inattention chez cet informaticien chevronné :)

[2] Burp!!