Jeter exception vs retourner une valeur null avec l'instruction switch

Donc, j'ai une fonction qui formate une date afin de le contraindre à des enum DateType{ACTUELLE, DÉBUT, FIN}
quel serait le meilleur moyen de la manipulation de la valeur de retour avec des cas qui utilisent l'instruction switch

public static String format(Date date, DateType datetype) {
    ..validation checks

    switch(datetype){
    case CURRENT:{
        return getFormattedDate(date, "yyyy-MM-dd hh:mm:ss");
    }               
    ... 
     default:throw new ("Something strange happend");
    }

}

OU de jeter excpetion à la fin

   public static String format(Date date, DateType datetype) {
            ..validation checks

            switch(datetype){
            case CURRENT:{
                return getFormattedDate(date, "yyyy-MM-dd hh:mm:ss");
            }               
            ... 
            }

               //It will never reach here, just to make compiler happy 
        throw new IllegalArgumentException("Something strange happend");    
        }

OU de retourner la valeur null

public static String format(Date date, DateType datetype) {
            ..validation checks

            switch(datetype){
            case CURRENT:{
                return getFormattedDate(date, "yyyy-MM-dd hh:mm:ss");
            }               
            ... 
            }

             return null;   
}

Quelle serait la meilleure pratique ici ? Aussi toutes les valeurs enum seront traitées dans l'instruction de cas

Si vous avez une condition qui ne doit jamais arriver, je voudrais utiliser une AssertionError.
Grâce AssertionError fait beaucoup plus de sens que IllegalArgumentException

OriginalL'auteur Greg | 2010-04-02