【问题标题】:Return value unaffected if Exception is thrown?如果抛出异常,返回值不受影响?
【发布时间】:2014-04-13 06:40:18
【问题描述】:

如果在方法内部抛出异常,返回值是否保持原来的样子?

例如:

public int test(int a) {
    throw new Exception();
}

然后:

a=2;
a=test(a);

...捕获后...

System.out.println(String.valueOf(a)); //a=?

是否受到异常的影响?在逻辑上似乎不是这样(?)虽然找不到关于那个的信息。 我需要确定。

【问题讨论】:

  • a仍然是2,但你为什么不试试呢?
  • 我确实尝试过,而且效果很好,但我需要 100% 确定情况总是如此。
  • 如果你将一个对象作为参数传递并在抛出异常之前修改了它的值,那么该对象仍然会被修改。
  • @user2254314 它工作了一次?那么为什么它会表现得不一样呢?真正的问题是什么?
  • 别无礼。 “它工作了一次”是保证某事一直工作的保证吗?可能有一些特殊情况。

标签: java exception return


【解决方案1】:

不,a 不会受到影响。它是在与您的 test() 方法不同的方法中声明的。

int a = 2;
try {
        a = obj.test(a);
    } catch (Exception e) {
        System.out.println(String.valueOf(a));
    }
System.out.println(String.valueOf(a));

两个 SOP 都将打印 2。

【讨论】:

    【解决方案2】:

    当您抛出异常时,JAVA 期望您处理它。所以应用程序的状态保持不变。因此,您的变量的值保持不变。 试试吧,

     public int test(int a) {
            throw new Error();
        }
    

    看看会发生什么:)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-06
      • 2013-08-07
      • 2016-11-09
      • 1970-01-01
      • 2013-05-29
      • 1970-01-01
      相关资源
      最近更新 更多