Java:抛出异常会杀掉它的方法吗?

时间:2013-04-12 02:45:45

标签: java exception exception-handling

例如:

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实际上是否返回方法?

1 个答案:

答案 0 :(得分:57)

如果抛出异常,return语句将运行。抛出异常会导致程序的控制流立即转到异常的处理程序(*),跳过其他任何方式。因此,如果msg抛出异常,则特别是null将在您的print语句中为showMsg

(*)除了finally块中的语句将会运行,但这在这里并不重要。