Exceptions in Interfaces

friednoodles

Aktives Mitglied
Ich beschäftige mich gerade damit wie man Exceptions in Interfaces handeln könnte und stoße nur auf Verwirrung.
Nehmen wir an ich habe folgendes Interface:
Java:
public interface Zahlung {
    boolean willPaymentGoThrough() throws PaymentException;
}
und die Methode in einer implementierenden Klasse:
Java:
    public boolean willPaymentGoThrough() {
        boolean rightAmount = false;
        System.out.println("Bitte den Betrag eingeben: ");
        Scanner sc = new Scanner(System.in);
        this.price = sc.nextDouble();

        if (price > 3.0) {
            rightAmount = true;
            return rightAmount;
        } else {
            throw new PaymentException("Betrag muss größer als 3€ sein");
        }
    }
Und der Aufruf in der Main:
Java:
    public static void proceedWithPayment() {
        try {
            setZahlung(new PayPal());

        } catch (PaymentException e) {
            System.out.println("Betrag muss größer als 3€ sein");
        }
    }

    public static Zahlung setZahlung(Zahlung zahlung) {

        if (zahlung instanceof PayPal) {
            PayPal paypal = (PayPal) zahlung;
            paypal.willPaymentGoThrough();
        return zahlung;
}

Macht es überhaupt Sinn in dem Interface an die Signatur ein throws zu hängen?
Gibt es Fälle in denen es Sinn macht?
Es gibt nämlich mehrere Klassen die das Interface implementieren und mit den Exceptions anders umgehen sollen.
 

mrBrown

Super-Moderator
Mitarbeiter
Generell macht das schon Sinn, wenn eben spezifiziert ist, wann die Exception fliegt und was für eine Bedeutung diese hat.
In deinem Fall ist das ziemlich egal, da das eine RuntimeException ist, die den Compiler da nicht interessiert. Mit Checked Exceptions ist das anders, die können die implementierenden Methoden nur werfen, wenn das Interface sie deklariert.


Btw: der instanceof-Check und der Cast sind überflüssig, du kannst die Methode direkt auf payment aufrufen, dafür ist das Interface ja da.
 
K

kneitzel

Gast
Ich habe es so verstanden, dass diese PymentException eine checked exception ist.

Durch den Cast zu PayPal muss er nun die Exception nicht mehr fangen. Macht aber wenig Sinn.... Der Sinn der Interfaces ist ja gerade, dass man die direkte Abhängigkeit zur Implementation los wird. So kann man frei entwickeln ohne sich über die möglichen Implementationen Gedanken zu machen.

Also was spielt hier alles mit rein:
Bei der Implementation eines Interfaces kann man weniger Restriktiv sein. Das passt dann ja immer noch. Finden tut man das in der JLS unter 8.4.8.3: https://docs.oracle.com/javase/specs/jls/se12/html/jls-8.html#jls-8.4.8.3
Da wird halt beschrieben, wie das mit dem Überschreiben und Verstecken funktioniert und welche Regeln dazu gehören. Die Signatur selbst besteht halt aus dem Namen und den Parametern. Und damit das dann Sinn macht, muss die Funktion gewisse Regeln erfüllen was Rückgabe und throws angeht.

Es ist also wichtig, dass man Interfaces sauber definiert. Und die Frage ist wirklich, ob eine Exception Sinn macht. Die Funktion soll ja nur prüfen, ob eine Zahlung erfolgreich sein würde. wenn irgendwas nicht stimmt, dann ist das evtl. ja einfach ein Grund, dass eben false zurück gegeben wird. Oder geht es hier um eine generelle Problematik, auf die Aufmerksam gemacht werden muss? Und kann da ein Recovery von der Applikation kommen? Das sind so Fragen, die ich mir stellen würde ....

Auch die Funktion setZahlung ist etwas dubios. Es wird nicht wirklich was gesetzt sondern in erster Linie wird die Zahlung zurück gegeben.... Und der Returncode von willPaymentGoThrough wird ignoriert?
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Test auf Exceptions schreiben Java Basics - Anfänger-Themen 11
berserkerdq2 Habe zwei exceptions, welche ist ein Kommunikationsfehler und welche ein Ausgabefehler? Java Basics - Anfänger-Themen 4
julian112 Input/Output .gz bzw. .txt Datei Einlesen und Umgang mit Exceptions Java Basics - Anfänger-Themen 1
C Exceptions identifizieren Java Basics - Anfänger-Themen 5
A Exceptions mit objektreferenzen Java Basics - Anfänger-Themen 4
A Exceptions und methods Java Basics - Anfänger-Themen 2
A Cannot find symbol bei exceptions Java Basics - Anfänger-Themen 2
A Exceptions und Packages Java Basics - Anfänger-Themen 6
B JUnit / Exceptions/ try-catch Java Basics - Anfänger-Themen 6
X Exceptions Benutzereingaben Java Basics - Anfänger-Themen 4
F Mehrere Exceptions in einem Catch-Block abfangen Java Basics - Anfänger-Themen 12
L Exceptions und Konten Java Basics - Anfänger-Themen 21
D Frage zu Exceptions Java Basics - Anfänger-Themen 8
I Wie programmiert man Exceptions? Java Basics - Anfänger-Themen 4
N Unterschied zwischen Checked und Unchecked Exceptions Java Basics - Anfänger-Themen 12
C Erste Schritte Exceptions nicht verstanden Java Basics - Anfänger-Themen 2
J Fragen zu Exceptions Java Basics - Anfänger-Themen 24
T Exceptions - ausgeführte Zeilen Java Basics - Anfänger-Themen 4
J Exceptions Java Basics - Anfänger-Themen 69
C Exceptions Java Basics - Anfänger-Themen 8
C Exceptions Java Basics - Anfänger-Themen 6
A ArrayQueue mit Exceptions und Vererbung Java Basics - Anfänger-Themen 3
F Exceptions Java Basics - Anfänger-Themen 6
J Frage zum Thema Exceptions (Try/Catch) Java Basics - Anfänger-Themen 3
M "Exceptions abfragen" Java Basics - Anfänger-Themen 6
Farbenfroh Exceptions Anfänger - Finde Fehler nicht Java Basics - Anfänger-Themen 7
Z Catch & Exceptions Java Basics - Anfänger-Themen 4
N Compiler-Fehler Drei Exceptions in GUIHack für Dreiecke auf MoveButtons Java Basics - Anfänger-Themen 36
V Welche Exceptions müssen importiert werden? Java Basics - Anfänger-Themen 3
S Exceptions Java Basics - Anfänger-Themen 7
M Vererbung Problem Vererbung/Exceptions Java Basics - Anfänger-Themen 9
S Verschachtelte Exceptions - Übersicht verbessern Java Basics - Anfänger-Themen 2
J Eclipse Exceptions Java Basics - Anfänger-Themen 2
K Schleifen und Exceptions Java Basics - Anfänger-Themen 8
K Exceptions auslagern Java Basics - Anfänger-Themen 15
R NullPointer Exceptions Java Basics - Anfänger-Themen 3
F Erste Schritte Übung zu Exceptions Java Basics - Anfänger-Themen 24
R Exceptions (try/catch) Java Basics - Anfänger-Themen 63
H Int Exceptions Java Basics - Anfänger-Themen 12
M Exceptions per throws oder try Java Basics - Anfänger-Themen 4
M Compiler-Fehler Queue als ArrayList mit Exceptions Java Basics - Anfänger-Themen 3
T Exceptions in einer Klasse Java Basics - Anfänger-Themen 3
B Eigene Exceptions entwerfen Java Basics - Anfänger-Themen 3
H Methoden Überflüssige Exceptions Java Basics - Anfänger-Themen 20
C Exceptions Java Basics - Anfänger-Themen 14
1 While Schleife Exceptions Java Basics - Anfänger-Themen 6
I Erste Schritte Eigene Fehlermeldungen bei Exceptions Java Basics - Anfänger-Themen 19
D Frage zu Exceptions Java Basics - Anfänger-Themen 12
M Compiler-Fehler Exceptions lieber throwen oder direkt catchen? Java Basics - Anfänger-Themen 8
T Exceptions Java Basics - Anfänger-Themen 19
B Wie finde ich Exceptions? Java Basics - Anfänger-Themen 19
Dit_ Input/Output Alle Exceptions protokollieren Java Basics - Anfänger-Themen 9
T Exceptions Java Basics - Anfänger-Themen 12
J Standard Exceptions abfangen Java Basics - Anfänger-Themen 5
F Exceptions werfen oder catchen?? Java Basics - Anfänger-Themen 14
D Exceptions - Ausnahmebehandlung Java Basics - Anfänger-Themen 19
D Frage zu Exceptions und der import Anweisung Java Basics - Anfänger-Themen 12
J Paar Fragen zu Exceptions Java Basics - Anfänger-Themen 16
G Verständnisproblem: Exceptions Java Basics - Anfänger-Themen 17
S Exceptions bei push/pop in Stack Java Basics - Anfänger-Themen 8
C Exceptions beim Beenden Java Basics - Anfänger-Themen 2
C TimerTask und Exceptions Java Basics - Anfänger-Themen 5
E Klasse öffnen, mehrere Exceptions Java Basics - Anfänger-Themen 9
C Exceptions Java Basics - Anfänger-Themen 7
G 2 Exceptions in einer Methode Java Basics - Anfänger-Themen 3
firefexx Exceptions werfen Java Basics - Anfänger-Themen 5
0 Exceptions mehrfach fangbar? Java Basics - Anfänger-Themen 4
O Exceptions Java Basics - Anfänger-Themen 3
K Sinn eigener Exceptions Java Basics - Anfänger-Themen 11
H Diverse Exceptions - Troubleshooting Java Basics - Anfänger-Themen 3
J exceptions Java Basics - Anfänger-Themen 8
sc0p InterruptedExceptions und Exceptions - in Einem! Java Basics - Anfänger-Themen 5
M Frage zu Exceptions Java Basics - Anfänger-Themen 19
M Fragen zu Exceptions Java Basics - Anfänger-Themen 3
A Exception Verständnisfrage: Exceptions während, einer Statischenzuweisung abfangen Java Basics - Anfänger-Themen 10
D Exceptions werfen + beenden Java Basics - Anfänger-Themen 12
M Exceptions aus interface-Methoden Java Basics - Anfänger-Themen 2
S File.renameTo und Exceptions / Fehlermeldung Java Basics - Anfänger-Themen 2
B Exceptions in Liste sammeln? Java Basics - Anfänger-Themen 5
O Eigene Exceptions Java Basics - Anfänger-Themen 11
O "restliche" Exceptions fangen Java Basics - Anfänger-Themen 8
H [Stil] Exceptions in der Klasse behandeln oder throwen? Java Basics - Anfänger-Themen 62
T Problem beim Werfen und Fangen von Exceptions Java Basics - Anfänger-Themen 2
V Aktivitätsdiagramm / Exceptions Java Basics - Anfänger-Themen 5
V Exceptions Java Basics - Anfänger-Themen 6
K Frage zu Exceptions -> Logging Java Basics - Anfänger-Themen 6
M Eigene Fehlermeldung bei Exceptions? Java Basics - Anfänger-Themen 12
R JDom Exceptions Java Basics - Anfänger-Themen 4
R Datei einlesen mit Exceptions Java Basics - Anfänger-Themen 2
Daniel_L Verwendung von try und catch bei exceptions Java Basics - Anfänger-Themen 7
C Reflection Exceptions behandeln Java Basics - Anfänger-Themen 6
G Exceptions - spiegeln wir da nicht einen Spiegel im Spiegel? Java Basics - Anfänger-Themen 10
G Verschiedene Exceptions zu gleichem Block Java Basics - Anfänger-Themen 6
U Frage zu Exceptions Java Basics - Anfänger-Themen 5
mwildam Philosophiefrage zu Exceptions und Rückgabewerten Java Basics - Anfänger-Themen 6
D Static, final Objekte mit Exceptions im Konstruktor Java Basics - Anfänger-Themen 2
G Exceptions Java Basics - Anfänger-Themen 4
G ServerSocket: Exceptions und Timeout Probleme Java Basics - Anfänger-Themen 10
M Exceptions bei Textfeldern abfangen Java Basics - Anfänger-Themen 2
P Problem mit exceptions Java Basics - Anfänger-Themen 9

Ähnliche Java Themen

Neue Themen


Oben