Java: Lancer Une Exception Tue-T-Il Sa Méthode?

Par exemple:

public String showMsg(String msg) throws Exception {
    if(msg == null) {
        throw new Exception("Message is null");
    }
    //Create message anyways and return it
    return "DEFAULT MESSAGE";
}

String msg = null;
try {
    msg = showMsg(null);
} catch (Exception e) {
    //I just want to ignore this right now.
}
System.out.println(msg); //Will this equal DEFAULT MESSAGE or null?

J'ai besoin d'ignorer essentiellement les exceptions dans certains cas (généralement lorsque plusieurs exceptions peuvent être lancées à partir d'une méthode et que l'on n'a pas d'importance dans un cas particulier) donc malgré l'exemple pathétique que j'ai utilisé pour simplifier le retour dans showMsg fonctionnera-t-il toujours ou le lancer renvoie-t-il réellement la méthode?

28
demandé sur ryandlf 2013-04-12 06:45:45

1 réponses

L'instruction return ne s'exécutera pas si l'exception est levée. Lancer une exception provoque le flux de contrôle de votre programme pour aller immédiatement au gestionnaire de l'exception (*), en sautant toute autre chose de la manière. Donc, en particulier, msg est null dans votre rapport d'impression si une exception a été levée par showMsg.

( * ) sauf que les instructions dans les blocs finally seront exécutées, mais ce n'est pas vraiment pertinent ici.

49
répondu jacobm 2013-04-12 02:50:49