在Java中尝试/捕获块

时间:2015-04-07 22:42:40

标签: java exception try-catch

对于我已经分配的程序,我们必须从文本文件中读取,创建一个名为NameInformation的对象的ArrayList,其中包含文件中的信息,然后提示用户输入名称和性别(性别为1)在NameInformation类中的变量,计算机将告诉有多少男孩或女孩有给定的名字。

可以在try catch块之外访问和使用文件吗?我想尝试这样的事情:

try {
   FileReader inFile = new FileReader (FILE_NAME);
} catch (FileNotFoundException e) {
   System.out.println ("The file " + FILE_NAME + " does not exist");
   System.exit(-1);
}

Scanner file = new Scanner (infile);
ArrayList<NameInformation> nameList = new ArrayList<NameInformation>();

我尝试了上面的代码并不断收到错误消息。我能让它工作的唯一方法就是让try块变得庞大。这是唯一的方法吗?我觉得有一个巨大的尝试块是不正确的。

我也希望将元素添加到ArrayList中,但似乎无法正确使用。

while (file.hasNextLine()) {
   NameInformation babyName = new NameInformation(file.nextLine());
   nameList.add(babyName);
}

但这并不是我想做的事情。

2 个答案:

答案 0 :(得分:0)

你可以像这样做,只给错误抛出try catch块,你永远不会传递catch块因为系统退出那里,否则你应该检查该文件后是否为null:

FileReader inFile = null;
try {
   inFile = new FileReader (FILE_NAME);
} catch (FileNotFoundException e) {
   System.out.println ("The file " + FILE_NAME + " does not exist");
   System.exit(-1);
}

Scanner file = new Scanner (infile);
ArrayList<NameInformation> nameList = new ArrayList<NameInformation>();

答案 1 :(得分:0)

初始化文件应该在Try Catch Block中。但是你应该在块之外声明它以便在外面访问它。例如:

FileReader inFile = null;
try {
    inFile = new FileReader (FILE_NAME);
} catch (FileNotFoundException e) {
    System.out.println ("The file " + FILE_NAME + " does not exist");
    System.exit(-1);
}

Scanner file = new Scanner (infile);
ArrayList<NameInformation> nameList = new ArrayList<NameInformation>();