Exception-Frage

Diskutiere Exception-Frage im Java Basics - Anfänger-Themen Bereich.
C

Codix

Hallo zusammen

Aufgabenstellung:

In der Klasse für grafische Eingabedialoge überprüfen wir durch den Vergleich der Variablen mit dem Wert null, ob die Eingabe abgebrochen wurde. Diese Konstruktion kann man auch durch eine Ausnahmebehandlung ersetzen. Welche Ausnahme käme dafür infrage? Wie könnten man diese Ausnahme auslösen?

Java:
package eindialogV2;



//für den Eingabedialog

import javax.swing.JOptionPane;



public class EingabeDialogV2 {

    //die Hilfsmethode zum Einlesen der Daten über den Dialog

    //Beschreibung siehe oben

    private static String lesen(String text) throws AbbruchException {

        String eingabeTemp;

        eingabeTemp = JOptionPane.showInputDialog("Bitte geben Sie einen " + text + " Wert ein:");

        //Wenn die Eingabe abgebrochen wurde, wird eine selbst definierte Ausnahme ausgelöst

        if (eingabeTemp == null)

            throw new AbbruchException("Die Eingabe für " + text + " wurde abgebrochen");

    

        return (eingabeTemp);

    }
Lösungsvorschlag:

Es ist eine NullPointerException
Die Ausnahme könnte man/frau so auslösen:
NullPointerException provozieren, indem man/frau z.B. versucht eine Methode von eingabeTemp aufzurufen:


Java:
try {

    String eingabeTemp = JOptionPane.showInputDialog("Bitte geben Sie einen " + text + " Wert ein:");

    return eingabeTemp.toString(); // hier der Versuch, toString() aufzurufen - falls eingabeTemp == null => NPE

} catch (NullPointerException ex) {

    throw new AbbruchException("Die Eingabe für " + text + " wurde abgebrochen!");

}
Frage an euch: Kann man den Lösungsvorschlag so gelten lassen?

danke im Voraus.
 
J

JustNobody

Also irgendwie ergibt das alles absolut keinen Sinn.

Exceptions sind für reine Ausnahmen. Eine valide Nutzereingabe (Cancel Button zu drücken ist eine valide Möglichkeit, denn dazu wurde das dem Benutzer ja als Option gegeben!) mit Ausnahmen zu reagieren, ist in meinen Augen schon ein fragwürdiges Design.

Also entweder man lässt da auch null zu als Rückgabe oder macht da ein Optional<String> als Rückgabe, damit da auf den Fall "Nutzer macht keine Eingabe" reagiert werden kann.

Aber ok, man beschließt, das über eine Exception zu lösen. Dann hat man einen Code, der so aussieht wie der erste gegebene.

Aber eine NPE zu provozieren um diese dann zu fangen ist eine Idee, die ich nicht nachvollziehen kann. Ist die Aufgabenstellung so korrekt wiedergegeben? Ist das so wirklich die Fragestellung?

Wenn sowas jetzt so gelehrt wird als Erweiterung, dann muss ich unweigerlich an Kung Fu Panda denken: "Jetzt gibt es einen Level 0".

Edit: Das mit dem 0-Level bezieht sich ggf auf Lerninhalte / Aufgaben und nicht auf Personen. Ich urteile nicht über Codix oder den Lehrer/Dozenten ... Die Aufgabenstellung finde ich lediglich etwas verwirrend.
 
Zuletzt bearbeitet:
C

Codix

Also irgendwie ergibt das alles absolut keinen Sinn.

Exceptions sind für reine Ausnahmen. Eine valide Nutzereingabe (Cancel Button zu drücken ist eine valide Möglichkeit, denn dazu wurde das dem Benutzer ja als Option gegeben!) mit Ausnahmen zu reagieren, ist in meinen Augen schon ein fragwürdiges Design.

Also entweder man lässt da auch null zu als Rückgabe oder macht da ein Optional<String> als Rückgabe, damit da auf den Fall "Nutzer macht keine Eingabe" reagiert werden kann.

Aber ok, man beschließt, das über eine Exception zu lösen. Dann hat man einen Code, der so aussieht wie der erste gegebene.

Aber eine NPE zu provozieren um diese dann zu fangen ist eine Idee, die ich nicht nachvollziehen kann. Ist die Aufgabenstellung so korrekt wiedergegeben? Ist das so wirklich die Fragestellung?

Wenn sowas jetzt so gelehrt wird als Erweiterung, dann muss ich unweigerlich an Kung Fu Panda denken: "Jetzt gibt es einen Level 0".

Edit: Das mit dem 0-Level bezieht sich ggf auf Lerninhalte / Aufgaben und nicht auf Personen. Ich urteile nicht über Codix oder den Lehrer/Dozenten ... Die Aufgabenstellung finde ich lediglich etwas verwirrend.
Die Aufgabenstellung ist korrekt. Wäre denn die Antwort richtig, wenn die Aufgabenstellung die gleiche bleibt?
 
J

JustNobody

Die Aufgabenstellung ist korrekt. Wäre denn die Antwort richtig, wenn die Aufgabenstellung die gleiche bleibt?
Ja, wenn die Aufgabenstellung so stimmt, dann ist es durchaus möglich, dass so eine Lösung gefordert ist. Zumindest fällt mir gerade nicht ein, wie es sonst zu interpretieren wäre...
 
Thema: 

Exception-Frage

Passende Stellenanzeigen aus deiner Region:
Anzeige

Neue Themen

Anzeige

Anzeige
Oben