2017-08-03 2 views
-1

Ich versuche dieses einfache Programm auszuführen, das aus einer separaten Textdatei liest und jede Zeile ausgibt. Allerdings, wenn ich versuche, es zu kompilieren, hält es mir den gleichen Fehler geben:Kompilierfehler beim Lesen einer Datei in Java

story.java:11: error: unreported exception FileNotFoundException; must be caught or declared to be thrown 
       x = new Scanner(new File("names.txt")); 

Hier ist mein Code:

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

public class story { 

    private static Scanner x; 

    public static void main(String[] args) { 

     String story = ""; 
     x = new Scanner(new File("names.txt")); 

     while(x.hasNext()){ 
      story = story + x; 
     } 
     System.out.println(story); 

    } 
} 
+5

die msg ganz klar ist: *** nicht gemeldet Ausnahme FileNotFoundException; muss abgefangen werden oder ... *** Du brauchst einen Versuch zu fangen oder versuche mit Ressourcen, um mit der Datei zu arbeiten .... –

+3

Oder ein 'throws FileNotFoundException' – Gusman

+1

Du solltest etwas über [checked a unchecked exception] (https : //stackoverflow.com/questions/6115896/java-checked-vs-unchecked-exception-explanation) – Blobonat

Antwort

1

Diese Meldung sagt Ihnen, dass Ihr main() Methode einige Dinge tut, dass kann FileNotFoundException werfen, aber Sie fangen weder diese Ausnahme noch deklarieren, dass eine solche Ausnahme von der main()-Funktion ausgelöst werden kann.

es zu korrigieren, erklärt Ihre main() Methode wie folgt:

public static void main(String[] args) throws FileNotFoundException { 
0

Bei der Programmierung gibt den normalen Fluss der Logik ist das Ihr Problem löst, und eine zweite Strömung von Logik, die „Exceptional“ unerwartete Situationen behandelt. Java verwendet den Typ Exception und das Schlüsselwort throw, um Code-Bits mit Ausnahmefehlern zu haben.

Ihr Programm wird überprüft, ob es in der Lage ist, außergewöhnliche Rückgabewerte zu verarbeiten. Da Sie den außergewöhnlichen Rückgabewert nicht behandelt haben, wird er nicht kompiliert.

Unten ist Ihr Code, der diese Exception behandelt. Achten Sie genau auf die try und catch Blockstruktur, denn so schreibt man Code, der eine Exception auslösen kann. Seien Sie jedoch nicht davon abhängig, wie ich die Ausnahme für Sie gehandhabt habe, denn die Details zur Behandlung der Ausnahme hängen davon ab, was Sie tun möchten.

Es gibt einen anderen Ansatz zur Behandlung von Ausnahmen, der manchmal geeignet ist, die Ausnahme nicht zu behandeln. Ändern Sie dabei die Methode von whatever the method was zu whatever the method was throws Exception. Zum Beispiel public static void main(String[] args) bis public static void main (String[] args) throws Exception.

Während dies die Beschwerde des Compilers behandelt, sollte es sparsam verwendet werden, da Ausnahmen, die durch die verschachtelten Methodenaufrufe nach der main-Methode auftauchen, das Programm zum Absturz bringen, normalerweise ohne leicht lesbare Ausgabe, die den Fehler für einen Menschen einfacher machen könnte .

1

ändern es zu

public static void main(String[] args) throws Exception { 

    String story = ""; 
    x = new Scanner(new File("names.txt")); 

    while(x.hasNext()){ 
     story = story + x; 
    } 
    System.out.println(story); 

} 

ODER

Put try catch im Code

public static void main(String[] args) { 

    String story = ""; 
    try { 
     x = new Scanner(new File("names.txt")); 
     while(x.hasNext()){ 
      story = story + x; 
     } 
     System.out.println(story); 
    } 
    catch(Exception e) { 
     // handle 
    } 
} 
0

Immer dann, wenn mit einem Dateiobjekt arbeiten, müssen Sie die Chance auf eine FileNotFoundException, handhaben, die auftritt, wenn die von Ihnen angegebene Datei nicht existiert.

, um dies zu beheben, einfach sagen throws Exception in Ihrem Hauptheader, oder verwenden Sie einen Versuch/catch-Block.

public static void main(String[] args) throws Exception { 

oder

public static void main(String[] args) { 

    String story = ""; 
    try 
    { 
     x = new Scanner(new File("names.txt")); 
     while(x.hasNext()){ 
      story = story + x; 
     } 
     System.out.println(story); 
    } 
    catch(Exception e) 
    { 
     System.out.println("Error: File not found!"); 
    } 
} 
0

1) Sie müssen sie in der try-catch-Block setzen. 2) Geben Sie den Pfad von "names.txt" an. Mein Code 3) wie folgt aussieht:

String story = ""; 
     try { 
     x = new Scanner(new File("/Users/Workspace/names.txt")); 
     while(x.hasNext()){ 
      System.out.println(story = story+x.next()); 
     } 
     System.out.println(story); 
    } catch (FileNotFoundException e){ 
     e.printStackTrace(); 
    } 
} 
Verwandte Themen