Unterschied zwischen Checked und Unchecked Exceptions

Nummer11

Mitglied
Kann mir einer sagen, was der Unterschied zwischen den Checked- und Unchecked Exception ist?

Was mich verwirrt ist, dass die Definition sagt, dass die checked Exceptions gefangen werden MÜSSEN. Die Unchecked MÜSSEN also nicht gefangen werden, oder was?
Wenn ich die aber nicht abfange, dann wird doch mein Programm abstürzen, also muss ich die doch auch abfangen...

Würde mich freuen, wenn mir das einer kurz erklären könnte.
 

fhoffmann

Top Contributor
Die Methode Integer.parseInt(String s) kann beispielsweise eine NumberFormatException werfen.
Wenn ich mir aber sicher bin, dass mein Text garantiert nur aus Ziffern besteht, kann ich mir das Fangen der Exception sparen:
Java:
String text = "123";
int zahl = Integer.parseInt(text);
Es ist aber keine schlechte Idee, die Exception dennoch zu fangen.
 

stg

Top Contributor
Etwas generalisiert kann man auch sagen:
Tritt eine unchekced exception auf, dann hast du zuvor in deinem Code etwas nicht beachtet, und diese deutet eher auf einen Programmierfehler hin, wohingegen checked exceptions auf ein Fehlverhalten hindeuten, welches du nicht beeinflussen kannst, wie z.B. eine abgebrochene Verbindung, während du auf eine Datenbank auf einer anderen Maschine zugreifst.
Daher ist es oft gar nicht mal schlecht, wenn dein Programm bei einer unchecked Exception deftig auf die Nase fällt.
 

Nummer11

Mitglied
Ok, ich denke ich habe den Unterschied jetzt etwas mehr begriffen, danke.
Und wie sieht es mit dem Auftreten der Exceptions aus? Ich meine mal gehört zu haben, dass beide, also checked und unchecked, IMMER NUR WÄHREND DER LAUFZEIT auftreten. Stimmt das?
 

Joose

Top Contributor
Natürlich können Exceptions nur zur Laufzeit auftreten da wird der Code ja auch ausgeführt ;)
Wenn der Compiler einen Fehler wirft ist das eine Exception vom Compiler(programm) zu dessen Laufzeit.
 

Nummer11

Mitglied
Hmm, ok... Wenn sie nur zur Laufzeit auftreten, warum meldet mir Eclipse schon beim schreiben des Programms dass eine Excetion auftritt z.B bei diesem Code hier:

Java:
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;

public class EigenesProgr {

    public static void main(String[] args)  {
        File path = new File("test.txt");
        path.createNewFile();
       
        FileInputStream datei = new FileInputStream("test.txt");
        while(datei.available()>0){
            System.out.print((char) datei.read());
        }
        datei.close();

Schon bevor ich den Code ausführe bekomme ich ja eine Fehlermeldung, dass das Programm nicht Compilierbar ist, weil beispielsweise in Zeile 9 eine IOExcetion auftritt, die ich behandeln muss. Würde das nicht heissen, dass die checked Exceptions auch schon vorher auftreten können?
 

Joose

Top Contributor
Eine checked Exception musst du behandeln, wo du sie behandelst bleibt aber dir überlassen.

Der Compiler sagt dir nur das er den Code nicht kompilieren kann weil er erwartet dass die Exception entweder mittels try/catch behandelt wird oder aber die Methode "gesagt" bekommt sie kann die Exception einfach weiterschmeißen.
 

Nummer11

Mitglied
Eine letzte Frage habe ich noch :)
Und zwar sollte ich bei der folgendem Code dafür sorgen, dass der Code einfach nur compilierbar wird, ohne an der Klasse was zu verändern:

Java:
public class Kaffeeautomat {
    private float kaffeepulverGramm;

    public void machKaffee() {
        if (kaffeepulverGramm < 12)
            throw new KaffeevorratLeerException();
        kaffeepulverGramm -= 12;
    }
    
   

    public static void main(String[] args){
        Kaffeeautomat automat = new Kaffeeautomat();
        automat.machKaffee();
       
    }
   
   
   
}


Mir war klar, dass ich eine Exception schreiben muss. Das habe ich dann auch gemacht. Die sah dann so aus:

Java:
public class KaffeevorratLeerException extends Exception {
   
    public KaffeevorratLeerException(){
    super("Nicht genug Kaffeepulver");
    }
}

Jedoch konnte ich das immernoch nicht kompilieren. Warum nicht? Die in der Methode machKaffee(); vorkommende Exception existiert ja nun.
Liegt es vllt daran, dass die Exception zwar geworfen wird aber nicht in der main aufgefangen werden kann, weil dort der try-catch block fehlt?
 

Meniskusschaden

Top Contributor
Jedoch konnte ich das immernoch nicht kompilieren. Warum nicht? Die in der Methode machKaffee(); vorkommende Exception existiert ja nun.
Ja, aber sie muß entweder mit try/catch abgefangen werden oder man muß mit throws deklarieren, daß sie geworfen werden kann. Für beides müsstest du Kaffeeautomat ändern, was du ja nicht darfst. Das liegt daran, dass die Klasse Exception checked Exceptions definiert. Sie ist also nicht als Basisklasse für deine KaffeevorratLeerException geeignet.
 

Nummer11

Mitglied
Das liegt daran, dass die Klasse Exception checked Exceptions definiert. Sie ist also nicht als Basisklasse für deine KaffeevorratLeerException geeignet.
Könntest du das vllt etwas ausführlicher erläutern?

-Also werden die unchecked Exceptions nicht von der Klasse Exceptions abgedeckt, verstehe ich das richtig?
-Woher weiss ich denn, wenn ich eine eigene Exception schreibe, von welcher Art von Exception meine Exception erben muss?

EDIT: Erben nicht alle Exceptons von der Oberklasse Exception? So habe ich es zumindest mal gelernt.
 

Meniskusschaden

Top Contributor
Könntest du das vllt etwas ausführlicher erläutern?
Die JLS beschreibt es hier genauer. In Absatz 11.1.1 steht auch, welche Exceptions checked bzw. unchecked sind.
Erben nicht alle Exceptons von der Oberklasse Exception?
Ja, das stimmt. Trotzdem sind nicht alle Nachfahren von Exception checked. Das liegt übrigens nicht daran, wie die Exception-Klassen programmiert wurden, sondern daran, wie Java mit ihnen umgeht. Also angenommen du würdest eine eigene Klasse ErrorXY programmieren, die exakt denselben Code enthält, wie beispielsweise die Klasse Error (die ist unchecked), dann wäre ErrorXY trotzdem checked.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
A Unterschied zwischen Checked und unchecked Exception Java Basics - Anfänger-Themen 3
S Unterschied zwischen Denkweisen Java Basics - Anfänger-Themen 13
Ras Unterschied zwischen parser xml and api xml Java Basics - Anfänger-Themen 7
X Was ist der Unterschied zwischen materialisierten und nichtmaterialisierten Attributen einer Klasse? Java Basics - Anfänger-Themen 1
jhCDtGVjcZGcfzug Was ist der Unterschied zwischen diesen Quellcodes? Java Basics - Anfänger-Themen 3
Y Unterschied zwischen WindowBuilder und herkömmlichen erstellen des GUI´s? Java Basics - Anfänger-Themen 9
U Worin besteht der Unterschied zwischen call by reference und call by value? Java Basics - Anfänger-Themen 14
E Unterschied zwischen new und import Java Basics - Anfänger-Themen 5
B Unterschied zwischen (List<T> a) und (T[] a) Java Basics - Anfänger-Themen 7
Aprendiendo Unterschied zwischen Referenzvariable und Instanzvariable. Java Basics - Anfänger-Themen 2
schoenosrockos Unterschied zwischen Objekten und vererbungen Java Basics - Anfänger-Themen 1
J Variablen Unterschied zwischen lokalen-, Instanz-, Klassenvariablen Java Basics - Anfänger-Themen 6
L Unterschied zwischen Klassen - und Instanzvarbiablen Java Basics - Anfänger-Themen 1
M Unterschied zwischen Classpath eines Eclipse Projektes und dem CLASSPATH? Java Basics - Anfänger-Themen 3
D Unterschied zwischen double und Double Java Basics - Anfänger-Themen 4
Q Unterschied zwischen static und keinem Modifier Java Basics - Anfänger-Themen 15
K Unterschied zwischen Jar, war und ear Dateien Java Basics - Anfänger-Themen 3
T Unterschied zwischen Integrationstest und JUnit test? Java Basics - Anfänger-Themen 12
K Unterschied zwischen break und continue in einer Schleife Java Basics - Anfänger-Themen 14
A Exakte Unterschied zwischen Java EE und Java SE? Java Basics - Anfänger-Themen 4
J Unterschied zwischen statische und nicht statische Methoden? Java Basics - Anfänger-Themen 14
O Java unterschied zwischen Interface und Interface_Referenzen!!?? Java Basics - Anfänger-Themen 7
J unterschied zwischen awt und swing Java Basics - Anfänger-Themen 6
B Unterschied zwischen String & char Array? Java Basics - Anfänger-Themen 5
B Was ist der unterschied zwischen Singleton und Strategy? Java Basics - Anfänger-Themen 6
B Variablen: unterschied zwischen Klassen und Instanzvariable Java Basics - Anfänger-Themen 2
H Unterschied zwischen 2 Date in Sekunden am einfachsten? Java Basics - Anfänger-Themen 5
tanja Der Unterschied Zwischen Arrays in Java und ADA Java Basics - Anfänger-Themen 11
ModellbahnerTT Unterschied zwischen zwei Frame close Varianten Java Basics - Anfänger-Themen 3
V Unterschied zwischen J2EE und JEE ?? Java Basics - Anfänger-Themen 1
N Was ist der Unterschied zwischen ArrayList und Vector? Java Basics - Anfänger-Themen 3
C Unterschied zwischen Polymorphie und Typcasting Java Basics - Anfänger-Themen 10
G Unterschied zwischen den Datenstrukturen Java Basics - Anfänger-Themen 2
M Unterschied zwischen . Compiler und JIT-Compiler,Hotspot-VM Java Basics - Anfänger-Themen 2
C Unterschied zwischen ArrayList und Vector Java Basics - Anfänger-Themen 2
I_Oscuridad Unterschied zwischen Objektorientiert und prozedural ? Java Basics - Anfänger-Themen 8
G Was ist der unterschied zwischen return und ? Java Basics - Anfänger-Themen 3
G Unterschied zwischen Java 2 bis 6 Java Basics - Anfänger-Themen 12
G Unterschied zwischen SwingWorker und "normalem" Th Java Basics - Anfänger-Themen 3
J Unterschied zwischen 2 Grafik Methoden Java Basics - Anfänger-Themen 2
G unterschied zwischen in.read() und in.read(byte [] b, int. Java Basics - Anfänger-Themen 3
G Unterschied zwischen SQL Timestamp und Java Java Basics - Anfänger-Themen 2
A Unterschied zwischen HashMap und Hashtable Java Basics - Anfänger-Themen 20
G Unterschied zwischen Assoziation, Aggregation u. Komposition Java Basics - Anfänger-Themen 7
G Unterschied zwischen & und && Java Basics - Anfänger-Themen 1
G Unterschied zwischen Ant und Maven Java Basics - Anfänger-Themen 9
K Unterschied zwischen Color.white und Color.WHITE? Java Basics - Anfänger-Themen 4
A Unterschied zwischen String & Stringbuffer! Java Basics - Anfänger-Themen 14
O Unterschied zwischen static und public Java Basics - Anfänger-Themen 2
G Was ist der Unterschied zwischen length und length()? Java Basics - Anfänger-Themen 7
N Unterschied zwischen Beans finden Java Basics - Anfänger-Themen 2
L Unterschied zwischen Objekten, Arrays und Strings Java Basics - Anfänger-Themen 2
G Unterschied zwischen Integer und int in java Java Basics - Anfänger-Themen 8
C Unterschied zwischen, Applet, Java und JavaScript Java Basics - Anfänger-Themen 3
K gibt es einen unterschied zwischen .JAVA und .java ? Java Basics - Anfänger-Themen 4
ven000m Unterschied zwischen: ADT & generischer Programmierung Java Basics - Anfänger-Themen 2
H Unterschied zwischen Stack und Array Java Basics - Anfänger-Themen 3
M Unterschied zwischen J2SE 5.0 Update x und J2SE 1.4.x Java Basics - Anfänger-Themen 4
C Unterschied zwischen equals und == ? Java Basics - Anfänger-Themen 6
D Unterschied zwischen Referenz auf Objekt/Instanz von Objekt Java Basics - Anfänger-Themen 9
G verstehe den unterschied zwischen equals und == nicht Java Basics - Anfänger-Themen 3
P Unterschied zwischen Interface und Vererbung und Sinn? Java Basics - Anfänger-Themen 5
M Unterschied zwischen J2SE, JSEE und JDK Java Basics - Anfänger-Themen 8
R Unterschied zwischen a++ und ++a Java Basics - Anfänger-Themen 9
G Unterschied zwischen homogenen und heterogenen Liste Java Basics - Anfänger-Themen 9
D Unterschied zwischen Ziffer und Zahl Java Basics - Anfänger-Themen 9
R Unterschied zwischen Integer und int Java Basics - Anfänger-Themen 6
B Was ist der Unterschied zwischen .java- und .class Dateien Java Basics - Anfänger-Themen 3
MoxMorris Integer.MAX_VALUE und Double.MAX_VALUE Unterschied Java Basics - Anfänger-Themen 3
R Java boolean Unterschied " == " und " = " Java Basics - Anfänger-Themen 3
berserkerdq2 Größter unterschied von extends thread und implements runnable? Java Basics - Anfänger-Themen 2
P Unterschied Installation von zipped JDK vs Installer-JDK (auf Windows)? Java Basics - Anfänger-Themen 2
M Unterschied Integer.toString(x) und x.toString() Java Basics - Anfänger-Themen 22
H Arrays: Größten Zahlen Unterschied herausfinden Java Basics - Anfänger-Themen 20
K Unterschied Information Hiding und Kapselung? Java Basics - Anfänger-Themen 2
G Methoden wo ist der Unterschied?? Java Basics - Anfänger-Themen 11
D Unterschied charAt() substr() Java Basics - Anfänger-Themen 3
D Unterschied == und equals in Arrays Java Basics - Anfänger-Themen 2
H Unterschied Konstruktor und Klassenname x = new Klassenname; Java Basics - Anfänger-Themen 3
H .jar unterschied .class Java Basics - Anfänger-Themen 3
O Unterschied Arrays, Listen, Mengen Java Basics - Anfänger-Themen 24
K Unterschied for-Schleife Java Basics - Anfänger-Themen 14
M Schlüsselworte Unterschied: String.matches und Pattern.compile Java Basics - Anfänger-Themen 2
G Unterschied Instanz- Klassenvariable Java Basics - Anfänger-Themen 11
C Methoden Unterschied zwichen public int, public static int und public static void Java Basics - Anfänger-Themen 2
H Unterschied BufferedReader und BufferedInputStream Java Basics - Anfänger-Themen 4
N Unterschied von Post- und Preinkrement Java Basics - Anfänger-Themen 3
T Unterschied dynamischer und statischer Laufzeittyp Java Basics - Anfänger-Themen 1
D Unterschied Date - Calendar Java Basics - Anfänger-Themen 1
J Warum ist das ein Unterschied (Integer / int) Java Basics - Anfänger-Themen 2
S Erste Schritte Unterschied "if" und "else if" Java Basics - Anfänger-Themen 27
F Erste Schritte Unterschied: Array "leer" / "null" Java Basics - Anfänger-Themen 3
V Unterschied x++ und x=x++ Java Basics - Anfänger-Themen 6
O Unterschied Baum <-> Automat Java Basics - Anfänger-Themen 2
A Klassen Unterschied Warteschlange, Stapel und Liste Java Basics - Anfänger-Themen 3
M Wo liegt der Unterschied? Deklaration Klasse oder Konstruktur Java Basics - Anfänger-Themen 3
S Unterschied print() und println() Java Basics - Anfänger-Themen 3
S Unterschied .jar Datei ausführen und junit Testfall... Java Basics - Anfänger-Themen 3
S Datentypen Unterschied elementare und zusammengesetzte/strukturierte Datentypen Java Basics - Anfänger-Themen 5
S Unterschied Ausführung in IDE <-> Befehlszeile Java Basics - Anfänger-Themen 0

Ähnliche Java Themen

Neue Themen


Oben