1. ホーム
  2. java

[解決済み] ファイルスキャナ 未報告の例外 FileNotFoundException; キャッチするか、スローされるように宣言する必要があります。

2022-02-26 01:02:19

質問

インターネットで調べられることはすべて試したのですが、何も解決しないようです。何が間違っているのか、教えてください。私はJavaの初心者です。ありがとうございます。

import java.util.Scanner;

class File_Scanner {    
    public static void read() {
        File credentials_file = new File("credentials.txt");
        Scanner file_reader = new Scanner(credentials_file);
        String[] users = new String[6];
        int index_counter = 0;

        try {
            while (file_reader.hasNextLine()) {
                users[index_counter] = file_reader.nextLine();
            }
            file_reader.close();

        } catch (Exception e) {
          System.out.println(e.getClass());
        }
    }
}

これは、次のようなエラーを表示しています。

Unreported exception FileNotFoundException; must be caught or declared to be thrown

解決方法は?

全体を囲むことをお勧めします。 read 関数は try/catch のようなブロックを作成します。

import java.util.Scanner;

class File_Scanner{    
    public static void read(){
        try {
            File credentials_file = new File("credentials.txt");
            Scanner file_reader = new Scanner(credentials_file);
            String[] users = new String[6];
            int index_counter = 0;

            while (file_reader.hasNextLine()) {
                users[index_counter] = file_reader.nextLine();
            }

            file_reader.close();
        } catch (Exception e) {
          System.out.println(e.getClass());
        }
    }
}

の考え方は try/catch は、プログラムの実行中に発生する可能性のあるエラーを回避するためのものです。あなたの場合 Scanner file_reader = new Scanner(credentials_file); はエラーを投げることがあります。 credentials_file が見つからないか、削除されます。したがって、この部分を try ブロックに例外を発生させ、それを処理することで適切な応答メッセージを catch ブロックを作成します。

お役に立てれば幸いです。