Java 为什么我会抓住这个例外

Java 为什么我会抓住这个例外,java,exception-handling,Java,Exception Handling,我正在运行以下代码以尝试从文本文件中读取。我对java相当陌生,一直在尝试为自己创建项目。下面的代码与我最初尝试读取文本文件时发现的代码略有不同,但由于某些原因,它每次都捕获异常。它试图读取的文本文件只显示“hello world”。我想它一定没有找到文本文件。我把它和源代码放在同一个文件夹中,它出现在源代码包中(顺便说一句,我使用的是netbeans)。它可能只是需要以不同的方式导入,但我找不到关于它的任何进一步信息。如果我的代码与此相关,请参见下文 package stats.practic

我正在运行以下代码以尝试从文本文件中读取。我对java相当陌生,一直在尝试为自己创建项目。下面的代码与我最初尝试读取文本文件时发现的代码略有不同,但由于某些原因,它每次都捕获异常。它试图读取的文本文件只显示“hello world”。我想它一定没有找到文本文件。我把它和源代码放在同一个文件夹中,它出现在源代码包中(顺便说一句,我使用的是netbeans)。它可能只是需要以不同的方式导入,但我找不到关于它的任何进一步信息。如果我的代码与此相关,请参见下文

package stats.practice;

import java.io.*;
import java.util.Scanner;

public final class TextCompare {

    String NewString;

    public static void main() {
        try {
            BufferedReader in = new BufferedReader(new FileReader("hello.txt"));
            String str;
            while ((str = in.readLine()) != null) {
                System.out.println(str);
            }
            in.close();
        } catch (IOException e) {
        } 
        System.out.println("Error");
    }
}

它不一定每次都捕获异常。您的
System.out.println(“错误”)语句在catch块之外。因此,每次程序执行时都会执行它


若要修复此问题,请将其移动到大括号内(
catch(IOException e){System.out.println(“Error”);}

它不一定每次都捕获异常。您的
System.out.println(“错误”)语句在catch块之外。因此,每次程序执行时都会执行它


要解决此问题,请将其移动到大括号(
catch(IOException e){System.out.println(“Error”);}
)中。

catch
块中的右大括号放错了位置。将其移动到
System.out.println(“错误”)下方

如果您使用的是Java 7,您可以通过以下方式利用自动资源管理:


catch
块中的右括号放错位置。将其移动到
System.out.println(“错误”)下方

如果您使用的是Java 7,您可以通过以下方式利用自动资源管理:


你有一个空的捕捉块,这几乎总是一个坏主意。试着把这个放在那里:

... catch (IOException ex) {
  ex.printStackTrace();
}

你应该很快看到发生了什么。

你有一个空的捕捉块,这几乎总是一个坏主意。试着把这个放在那里:

... catch (IOException ex) {
  ex.printStackTrace();
}

您应该很快看到发生了什么。

第一步,替换下面的代码

catch (IOException e){}

并且还替换

main()

这会告诉你确切的原因。然后你必须解决实际的原因

现在对于Netbeans,文件
hello.txt
必须在Netbeans项目中。像

<project_dir>
    |
    -->hello.txt
    -->build
    -->src

|
-->hello.txt
-->建造
-->src

第一步,更换以下代码

catch (IOException e){}

并且还替换

main()

这会告诉你确切的原因。然后你必须解决实际的原因

现在对于Netbeans,文件
hello.txt
必须在Netbeans项目中。像

<project_dir>
    |
    -->hello.txt
    -->build
    -->src

|
-->hello.txt
-->建造
-->src

是的,但是它应该打印比错误更好的内容,这样您就可以看到问题所在。是的,但是它应该打印比错误更好的内容,这样您就可以看到问题所在。谢谢。只需替换文本文件的位置即可。谢谢。它只需要替换文本文件的位置。
<project_dir>
    |
    -->hello.txt
    -->build
    -->src