38

例如:

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?

在某些情况下,我需要基本上忽略异常(通常当一个方法可以抛出多个异常,而在特定情况下一个无关紧要),所以尽管我为了简单起见使用了可怜的例子,但 showMsg 中的返回仍然会运行还是 throw 实际上会返回该方法?

4

1 回答 1

70

如果抛出异常,该return语句将不会运行。抛出异常会导致程序的控制流立即转到异常的处理程序(*),从而跳过任何其他方式。因此,msg如果.nullshowMsg

(*) 除了finally块中的语句将运行,但这在这里并不真正相关。

于 2013-04-12T02:50:49.767 回答