Java:抛出一个异常会杀死它的方法吗?

2022-09-01 03:42:01

例如:

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中的返回是否仍然运行,或者抛出实际上返回该方法?


答案 1

如果引发异常,该语句将不会运行。引发异常会导致程序的控制流立即转到异常的处理程序(*),从而跳过其他任何内容。因此,如果 异常 是由 抛出的,则尤其会在您的 print 语句中。returnmsgnullshowMsg

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


答案 2

推荐