wake-up-neo.net

Warum erhalte ich den "Unbehandelten Ausnahmetyp IOException"?

Ich habe den folgenden einfachen Code:

import Java.io.*;
class IO {
    public static void main(String[] args) {    
       BufferedReader stdIn = new BufferedReader(new InputStreamReader(System.in));    
       String userInput;    
       while ((userInput = stdIn.readLine()) != null) {
          System.out.println(userInput);
       }
    }
}

Und ich bekomme die folgende Fehlermeldung:

----------
1. ERROR in io.Java (at line 10)
    while ((userInput = stdIn.readLine()) != null) {
                        ^^^^^^^^^^^^^^^^
Unhandled exception type IOException
----------
1 problem (1 error)[email protected]:~/work/Java$ mcedit io.Java 

Hat jemand eine Idee warum? Ich habe gerade versucht, den auf der sum-Website angegebenen Code zu vereinfachen ( hier ). Habe ich mich zu stark vereinfacht?

29
Roman

Sie sollten Ihrer Hauptmethode "throws IOException" hinzufügen:

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

In JLS können Sie etwas mehr über geprüfte Ausnahmen (die spezifisch für Java sind) nachlesen.

50
Marcin

Java hat eine Funktion namens "geprüfte Ausnahmen". Das bedeutet, dass es bestimmte Arten von Ausnahmen gibt, nämlich solche, die Exception, aber nicht RuntimeException subklassieren, so dass eine Methode, die sie auslösen kann, von must in ihrer deklariert werden muss. IOException ist eine davon.

Wenn Sie also eine Methode aufrufen, die IOException in ihrer Deklarationsdeklaration aufführt, müssen Sie sie entweder in Ihrer eigenen Deklarationsdeklaration auflisten oder abfangen.

Der Grund für das Vorhandensein von aktivierten Ausnahmen ist, dass Sie bei einigen Arten von Ausnahmen die Tatsache nicht ignorieren dürfen, dass sie auftreten können, da dies ein regelmäßiger Vorgang ist und kein Programmfehler. Der Compiler hilft Ihnen dabei, die Möglichkeit einer solchen Ausnahme nicht zu vergessen und erfordert, dass Sie auf irgendeine Weise damit umgehen.

Allerdings passen nicht alle geprüften Ausnahmeklassen in der Java-Standardbibliothek unter diese Gründe, aber das ist ein völlig anderes Thema.

40
jkff

Versuchen Sie es erneut mit diesem Code-Snippet:

import Java.io.*;

class IO {
    public static void main(String[] args) {    
        try {
            BufferedReader stdIn = new BufferedReader(new InputStreamReader(System.in));    
            String userInput;    
            while ((userInput = stdIn.readLine()) != null) {
                System.out.println(userInput);
            }
        } catch(IOException ie) {
            ie.printStackTrace();
        }   
    }
}

Die Verwendung von try-catch-finally ist besser als die Verwendung von throws. Das Auffinden von Fehlern und das Debuggen sind mit try-catch-finally einfacher.

11
Parth

fügen Sie Ihrer Methode "IOException" wie folgt hinzu:

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

        FileReader reader=new FileReader("db.properties");

        Properties p=new Properties();
        p.load(reader);


    }
0
harun ugur

Das Lesen von Eingaben über die Tastatur entspricht dem Herunterladen von Dateien aus dem Internet. Das Java-io-System öffnet Verbindungen mit der zu lesenden Datenquelle mithilfe von InputStream oder Reader. Sie müssen eine Situation handhaben, in der die Verbindung mithilfe von IOExceptions unterbrochen werden kann

Wenn Sie genau wissen möchten, was es bedeutet, mit InputStreams und BufferedReader diesem Video zu arbeiten, wird dies angezeigt

0
vivz