Exceptions erklärt

Diskutiere Exceptions erklärt im Allgemeine Java-Themen Bereich.
Kirby_Sike

Kirby_Sike

Also ich habe die folgende Aufgabe als Übung gemacht und meine Ergebnisse waren auch richtig, jedoch verstehe ich nicht weshalb xD

Die Ergebnisse sind:
a) E
b) H
c) I

Warum kann die Exception nicht auch mit MeinSchlimmerFehler gefangen werden? Es ist ja eine Subklasse von MeinFehler und müsste somit ja eigentlich noch mehr Funktionalität besitzen ?

Bildschirmfoto 2020-02-24 um 09.38.41.png
 
mrBrown

mrBrown

Warum kann die Exception nicht auch mit MeinSchlimmerFehler gefangen werden? Es ist ja eine Subklasse von MeinFehler und müsste somit ja eigentlich noch mehr Funktionalität besitzen
Genau das ist der Grund, warum sie mit MeinSchlimmerFehler nicht gefangen wird :)

Mal ein etwas handlicheres Beispiel: MeinFehler ist ein Auto und MeinSchlimmerFehler ist ein SUV. Wenn die Polizei Autos anhalten soll, kann sie natürlich auch SUVs anhalten, wenn sie aber nur SUVs anhalten soll, macht es wenig Sinn, auch einen Smart anzuhalten :)
 
Kirby_Sike

Kirby_Sike

Genau das ist der Grund, warum sie mit MeinSchlimmerFehler nicht gefangen wird :)

Mal ein etwas handlicheres Beispiel: MeinFehler ist ein Auto und MeinSchlimmerFehler ist ein SUV. Wenn die Polizei Autos anhalten soll, kann sie natürlich auch SUVs anhalten, wenn sie aber nur SUVs anhalten soll, macht es wenig Sinn, auch einen Smart anzuhalten :)
Ahh ok also wenn throws MeinFehler dann wird diese Exception entweder von einem try catch mit der Exception oder einer Superklasse dieser Exception gecatched?
 
L

LimDul

Ansonsten überleg dir mal folgendes:

Java:
public class SubKlasseA extends Oberklasse {}

public class SubSubKlasseB extends SubKlasse A {}
Welche Zuweisungen sind erlaubt?

Java:
SubKlasseA a = new SubSubKlasseB(); // Geht
SubSubKlasseB b = new SubKlasseA(); // Geht nicht
Wenn nun mittels catch (MeinSchlimmerFehler e) eine Exception vom Typ MeinFehler fangen würdest, würdest du damit der Variable e ein Objekt vom Typ MeinFehler zuweisen - was eben nicht geht, denn nicht jedes Objekt vom Typ MeinFehler ist auch vom Typ MeinSchlimmerFehler.
 
Kirby_Sike

Kirby_Sike

Ansonsten überleg dir mal folgendes:

Java:
public class SubKlasseA extends Oberklasse {}

public class SubSubKlasseB extends SubKlasse A {}
Welche Zuweisungen sind erlaubt?

Java:
SubKlasseA a = new SubSubKlasseB(); // Geht
SubSubKlasseB b = new SubKlasseA(); // Geht nicht
Wenn nun mittels catch (MeinSchlimmerFehler e) eine Exception vom Typ MeinFehler fangen würdest, würdest du damit der Variable e ein Objekt vom Typ MeinFehler zuweisen - was eben nicht geht, denn nicht jedes Objekt vom Typ MeinFehler ist auch vom Typ MeinSchlimmerFehler.
Ich glaube ich hatte mich selber etwas verwirrt XD
 
Thema: 

Exceptions erklärt

Passende Stellenanzeigen aus deiner Region:
Anzeige

Neue Themen

Anzeige

Anzeige
Oben