gpt4 book ai didi

java - 在 try catch block 之外使用变量 (Java)

转载 作者:太空宇宙 更新时间:2023-11-04 09:38:07 25 4
gpt4 key购买 nike

我有一个在 try catch block 之前声明的变量,以确保我可以在 block 之外访问它

/*
Try to get a list of all files.
*/

List<String> result;
try( Stream<Path> walk = Files.walk(Paths.get("data"))){
List<String> result = walk.filter(Files::isRegularFile)
.map(x -> x.toString()).collect(Collectors.toList());


}
catch(Exception e){
e.printStackTrace();
List<String> result = null;
}


ListIterator iter = result.listiterator() // cannot resolve symbol

当我取出原始声明时,出现无法解析符号错误。当我保留它时,我收到一个变量已声明错误。

构造此结构以在 try except 子句之外使用变量的最佳方法是什么?

最佳答案

要解决编译错误,请仅在 try-catch block 之前声明 result 变量:

List<String> result; 
try( Stream<Path> walk = Files.walk(Paths.get("data"))){
result = walk.filter(Files::isRegularFile)
.map(x -> x.toString()).collect(Collectors.toList());
}
catch(Exception e){
e.printStackTrace();
result = null;
}

但是,请注意,在 try-catch block (您的 result.listiterator() 语句)之后访问 result 变量而不检查它是否不为 null 可能会引发 NullPointerException

您应该问自己为什么会捕获异常并期望一切正常。

关于java - 在 try catch block 之外使用变量 (Java),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56255432/

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