gpt4 book ai didi

Java:处理异常并从内部方法返回结果

转载 作者:行者123 更新时间:2023-11-29 06:34:21 24 4
gpt4 key购买 nike

问题: 如何做到:在outer 方法中处理异常并在inner 方法中返回结果?

我有:两个返回List的方法:

import java.util.List;
import java.util.LinkedList;

public class HelloWorld {

public static void main(String[] args){
System.out.println("Result = " + new HelloWorld().parseWrapper());
}

public List<Integer> inner() {
List<Integer> list = new LinkedList<Integer>();
for (int i = 0; i < 5; i++) {
if (i % 4 == 0) throw new RuntimeException();
list.add(i);
}
return list;
}

public List<Integer> outer() {
List<Integer> list = null;
try {
list = parse();
} catch (Exception e) {
System.out.println("Handle exception!");
} finally {
return list;
}
}
}

结果:

Handle exception!
Result = null // PROBLEM: I DON'T WANT TO LOOSE IT

问题:我丢失了结果列表。我想要两者:处理异常并从 outer 方法返回 [1, 2, 3] 列表。

最佳答案

否 - 内部方法不返回任何内容,因为它而是抛出异常。外部方法根本没有可使用的结果。

如果方法抛出异常,通常认为方法中的工作没有是有用的。

如果您想尽可能多地填充一个列表,您可以将列表传递给方法:

public void inner(List<Integer> list) {
for (int i = 0; i < 5; i++) {
if (i % 4 == 0) throw new RuntimeException();
list.add(i);
}
}

然后称它为:

public List<Integer> outer() {
List<Integer> list = new LinkedList<>;
try {
parse(list);
} catch (Exception e) {
System.out.println("Handle exception!");
} finally {
return list;
}
}

老实说,这很少是个好主意——根据我的经验,大多数异常都无法真正处理和恢复;这更像是“找出需要清理的内容,以及要中止的工作单元”的情况。这当然不是普遍适用的,但您试图通过方法实现的部分结果很少有用。

关于Java:处理异常并从内部方法返回结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24393070/

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