Warum erhalte ich den „unbehandelten Ausnahmetyp IOException“?

Lesezeit: 2 Minuten

Ich habe 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 folgende Fehlermeldung:

----------
1. ERROR in io.java (at line 10)
    while ((userInput = stdIn.readLine()) != null) {
                        ^^^^^^^^^^^^^^^^
Unhandled exception type IOException
----------
1 problem (1 error)roman@roman-laptop:~/work/java$ mcedit io.java 

Hat jemand eine Idee warum? Ich habe nur versucht, den auf der Sum-Website angegebenen Code zu vereinfachen (Hier). Habe ich zu stark vereinfacht?

Warum erhalte ich den „unbehandelten Ausnahmetyp
Markus

Sie sollten Ihrer Hauptmethode “throws IOException” hinzufügen:

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

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

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 ableiten, so dass, wenn eine Methode sie werfen kann, es muss listet sie in seiner throws-Deklaration auf, sagen wir: void readData() throws IOException. IOException ist eine davon.

Wenn Sie also eine Methode aufrufen, die IOException in ihrer throws-Deklaration auflistet, müssen Sie sie entweder in Ihrer eigenen throws-Deklaration auflisten oder abfangen.

Der Grund für das Vorhandensein von geprüften Ausnahmen ist, dass Sie bei einigen Arten von Ausnahmen die Tatsache nicht ignorieren dürfen, dass sie auftreten können, da ihr Auftreten eine ganz normale Situation und kein Programmfehler ist. Der Compiler hilft Ihnen also, die Möglichkeit, dass eine solche Ausnahme ausgelöst wird, nicht zu vergessen, und fordert Sie auf, sie auf irgendeine Weise zu behandeln.

Allerdings passen nicht alle geprüften Ausnahmeklassen in der Java-Standardbibliothek unter diese Logik, aber das ist ein ganz anderes Thema.

1643824625 834 Warum erhalte ich den „unbehandelten Ausnahmetyp
Teil

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();
        }   
    }
}

Verwenden try-catch-finally ist besser als benutzen throws. Das Auffinden von Fehlern und das Debuggen sind einfacher, wenn Sie es verwenden try-catch-finally.

1643824625 601 Warum erhalte ich den „unbehandelten Ausnahmetyp
vivz

Das Lesen von Eingaben von der Tastatur ist analog zum Herunterladen von Dateien aus dem Internet, das Java-IO-System öffnet Verbindungen mit der Quelle der zu lesenden Daten mit InputStream oder Reader, Sie müssen mit einer Situation umgehen, in der die Verbindung unterbrochen werden kann, indem Sie IOExceptions verwenden

Wenn Sie genau wissen möchten, was es bedeutet, mit InputStreams und BufferedReader zu arbeiten Dieses Video zeigt es

Fügen Sie Ihrer Methode “throws 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);


    }

1643824626 737 Warum erhalte ich den „unbehandelten Ausnahmetyp
KoKlA

Ich habe den Fehler erhalten, obwohl ich die Ausnahme abgefangen habe.

    try {
        bitmap = BitmapFactory.decodeStream(getAssets().open("kitten.jpg"));
    } catch (IOException e) {
        Log.e("blabla", "Error", e);
        finish();
    }

Problem war, dass die IOException nicht importiert wurde

import java.io.IOException;

.

744400cookie-checkWarum erhalte ich den „unbehandelten Ausnahmetyp IOException“?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy