JAVA try catch finally

159 阅读1分钟
  1. finally中包含return,最终返回finally中return的结果。 下面代码结果为4:
int a = 1;
try {
    a = 2;
    return a;
} catch (Exception e) {
    a = 3;
    return a;
} finally {
    a = 4;
    return a;
}
  1. try或catch中包含return,则return 的内容的地址在执行finally之前就已经固定了。 下面代码结果为2:
int a = 1;
try {
    a = 2;
    return a;
} catch (Exception e) {
    a = 3;
    return a;
} finally {
    a = 4;
}

下面代码结果为[1,3]:

List<Integer> list = new ArrayList();
try {
    list.add(1);
    return list;
} catch (Exception e) {
    list.add(2);
    return list;
} finally {
    list.add(3);
}