gpt4 book ai didi

java - 抛出异常时的后增量行为

转载 作者:行者123 更新时间:2023-11-30 07:40:01 24 4
gpt4 key购买 nike

昨天遇到了这个奇怪的问题。似乎无法在 Java 规范中为以下内容找到任何合乎逻辑的解释......

public class Program {

public static void main(String[] args) {
int i = 0;

try {
bork(i++);
} catch (Exception e) {
}
System.out.println(i);
}

private static void bork(int i) {
throw new RuntimeException();
}

}

有人会认为后增量不会发生,因为 bork 会抛出异常,但它确实会发生!

这种行为的解释是什么?

最佳答案

在调用方法bork() 之前调用i++ 操作。这就是它仍然递增的原因。

所以:

  1. i++ 被调用。
  2. 因此,它返回 i 在递增之前的状态。
  3. 同时 i 的实际状态递增。所以 i 的值现在是 1
  4. bork(0) 被调用。
  5. 抛出异常。
  6. 异常被处理(什么都不做)
  7. i 的当前状态被打印出来,它等于 1

关于java - 抛出异常时的后增量行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58452626/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com