我正在学习java,我发现有一件事是我不喜欢的,那就是当我有这样的代码时:
import java.util.*;
import java.io.*;
public class GraphProblem
{
public static void main(String[] args)
{
if (args.length < 2)
{
System.out.println("Error: Please specify a graph file!");
return;
}
FileReader in = new FileReader(args[1]);
Scanner input = new Scanner(in);
int size = input.nextInt();
WeightedGraph graph = new WeightedGraph(size);
for(int i = 0; i < size; i++)
{
graph.setLabel(i,Character.toString((char)('A' + i)));
}
for(int i = 0; i < size; i++)
{
for(int j = 0; j < size; j++)
{
graph.addEdge(i, j, input.nextInt());
}
}
// .. lots more code
}
}我的FileReader周围有一个未捕获的异常。
因此,我必须将其包装在try-catch中以捕获特定的异常。我的问题是,在我的方法中,如果想要使用我的FileReader ( in )或我的Scanner (input),try { }是否必须包含其后的所有内容?
如果我没有将整个程序的其余部分包装在try语句中,那么它之外的任何东西都不能访问in/input,因为它可能没有被初始化,或者已经被初始化到了它的作用域之外。因此,我不能将try-catch隔离为只说初始化FileReader的部分,并在那之后立即关闭try语句。
那么,“最佳实践”是不是让try语句包装所有要在其中访问变量的代码部分呢?
谢谢!
发布于 2010-05-01 00:37:33
不是的。您可以这样声明它:
FileReader in = null;
Scanner input = null;
try {
in = new FileReader(args[1]);
input = new Scanner(in);
} catch(IOException ioe) {
//
}https://stackoverflow.com/questions/2746098
复制相似问题