我收到了一个未报告的异常;必须在下面的fill方法中被捕获或声明为抛出错误。从我读过的类似文章中,我假设错误是由read方法引发Exception引发的,但我无法修复。
public void read(int fileName) throws Exception
{
FileInputStream in = null;
try
{
Scanner in = new Scanner("dataset.txt");
File inFile = new File(in.nextLine());
in = new FileInputStream(inFile);
}
catch ( Exception e)
{
System.out.println(e);
}
BufferedReader buf = new BufferedReader(new InputStreamReader(in) );
String input;
input = buf.readLine();
fill(input,buf);
}
填充定义为:
public void fill(String in,BufferedReader buf)
{
StringTokenizer token = new StringTokenizer(input);
no = token.countTokens();
constraints = new Vector[noOfAttributes];
for (int i=0; i < no; i++)
{
c[i] = new Vector();
names = new String[noOfAttributes];
}
for (int i=0; i < no; i++)
{
names[i] = token.nextToken();
}
while((in = buf.readLine()) != null) //<----error given here
{
token = new StringTokenizer(input);
Train example = new Train(no);
}
buffer.close();
}
您的fillData
call buffer.readLine()
,它被声明为throw
IOException
,但是您既没有捕获witin异常fillData
,也没有声明它可能被抛出。
最简单的解决方法是将的签名更改fillData
为:
public void fillData(String input, BufferedReader buffer) throws IOException
我也强烈建议 不要 关闭中的读者fillData
。通常,获取资源的相同代码应负责关闭资源。在这里,try-with-
resources语句最合适,所以在read
:
try (BufferedReader buffer = new BufferedReader(new InputStreamReader(in))) {
String input = buffer.readLine();
fillData(input,buffer);
}
但是,即使这样也不是理想的-因为您早先打开了输入流。我 还
建议始终将编码传递给InputStreamReader
构造函数,否则它将使用平台默认编码。在Java
7+中,您可以使用Files.newBufferedReader
默认为UTF-8的版本。
另外:
read
声明抛出异常Exception
通常是一个坏主意;只抛出特定的异常Exception
的read
是一个坏主意; 只捕获特定的异常read
失败后继续执行操作是个坏主意- in
为空,此后立即导致失败fileName
type 的参数是非常奇怪的int
。碰巧的是,您无论如何都没有使用它-这有什么意义?基本上, 所有 异常处理和资源管理都需要大量工作。
问题内容: 在学习Java时,我经常会偶然发现此错误。它是这样的: 只是一个例子,我见过很多不同的例子。在这种情况下,导致错误的代码是: 一旦将语句放入块中,错误总是消失并且代码编译并成功运行。有时对我来说已经足够了,但有时却不行。 首先,我从中学习的示例并不总是使用,但是显然应该可以使用。 更重要的是,有时当我将整个代码放在中时,它根本无法工作。例如在这种情况下,我需要; 在区块中;但如果上述本
问题内容: 我想打开一个文件并对其进行扫描以打印其令牌,但出现错误:未报告的异常java.io.FileNotFoundException; 必须被捕获或声明为抛出Scanner stdin = new Scanner(file1);该文件与正确的名称位于同一文件夹中。 问题答案: 您正在使用的构造函数将引发FileNotFoundException,您必须在编译时捕获该异常。 上面的表示法(在括
然而,试图使用jsp与bean交互时,在运行它时会出现一些错误。 下面是我在浏览器中看到的错误 生成的servlet错误:[javac]c:\sun\appservernew\domains\domain1\Generated\jsp\j2ee-apps\converterapp\war-ic_war\org\apache\jsp\index_jsp.java:24:未报告的异常javax.ejb
我试图找出为什么在<代码>中会发生特定行为。orElseThrow在Java流中。此代码块 导致此错误:
问题内容: 请问为什么第13行中的错误是未报告的异常,必须在声明声明为pr的情况下将其捕获 问题答案: 您需要向引发异常的方法中添加一个,如上所述,以及调用该方法的所有方法
你好,我试图在NetBeans7 IDE,java6,glassFish3.2环境中生成动态报告。我正在使用java创建项目 commons-collections-3.2.1 commons-digester-2.0 dynamicreports-1.3.0 dynamicreports-adhoc-4.0.1 dynamicreports-core-4.0.1 itext-2.1.7 jasp