Java-программа выдает мне FileNotFoundException, когда файл, из которого я читаю, существует, но затем отлично работает, если я обработаю исключение - PullRequest
0 голосов
/ 07 декабря 2018
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;

public class WordJumble {

    public static void main(String[] args) throws FileNotFoundException {
        // TODO Auto-generated method stub
        File file = new File("F:/Files/Topic.txt");
        Scanner sc = new Scanner(file); 

        String title = sc.nextLine();
        System.out.println(title);
        for(int i=0;i<10;i++){
            System.out.println(sc.nextLine());
        }
    }
}

В настоящее время программа делает то, что я хочу, но почему она выдает ошибку об отсутствии файла?Когда я добавляю предложение throws, чтобы игнорировать ошибку, он может найти файл без проблем.

Ответы [ 2 ]

0 голосов
/ 07 декабря 2018

Когда вы сказали «добавить оператор, чтобы игнорировать ошибку», вы имели в виду добавление предложения «throws ...» к определению main, чтобы оно было аккуратно скомпилировано.Правильно?

Что происходит, Scanner многие бросают FileNotFoundException, если файл не найден.Это исключение должно быть обработано (поймано) где-то.

Вместо этого вы решили не обрабатывать и сказали, что оно может распространяться из main.

Надлежащий способ сделать это - использоватьtry - catch конструкция.

try {
   Scanner sc = new Scanner(file);
   :
   :
catch (FileNotFoundException ex) {
   ... print an error or something ...
}

Этот подход используется для того, чтобы обработка ошибок находилась вне линии основного потока кода.

0 голосов
/ 07 декабря 2018

Хотя формулировка ошибки может немного сбивать с толку, ошибка сама по себе не является FileNotFoundException, а является жалобой на то, что вы не имеете дело с возможностью такого исключениябыть брошеннымВсе, что говорит ваш компилятор, это то, что вам нужно иметь дело с возможностью того, что файл окажется не там, где вы думаете.Поэтому, когда вы добавляете throws FileNotFoundException к сигнатуре метода, компилятор удовлетворяется, и ваша ошибка исчезает.

...