missing return statement

Roovy

Aktives Mitglied
Ich habe eine Funktion geschrieben, die einen String aus einer xml-Datei lesen soll und diese dann an den Auftraggeber (in anderer Klasse) weitergeben soll.
Code:
public static Element e;
    public static Element VERSION() {
        try {
            DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
            DocumentBuilder builder = factory.newDocumentBuilder();
            Document doc = builder.parse(new File("config.xml"));
           
            NodeList nList = doc.getElementsByTagName("version");
            Node version = nList.item(1);
            Element e = (Element) version;
           
            return e;
        } catch (IOException e) {
            e.printStackTrace();
        } catch (ParserConfigurationException e) {
            e.printStackTrace();
        } catch (SAXException e) {
            e.printStackTrace();
        }
    }
Es zeigt mir an, dass ein Return statement fehlt, was ich aber habe. Leider muss es in dem Try-Catch sein, da es sonst nicht weißt woher es die Node 'version' beziehen soll, da diese scheinbar nur innerhalb des T-C zugreifbar ist.
Bewege ich diese auch aus dem T-C heraus (streng genommen benötigen ja nur die ersten beiden Zeilen Try-Catch) fehlt wiederrum NodeList 'nList'.

Was mache ich falsch?
 

mrBrown

Super-Moderator
Mitarbeiter
Es muss für jeden möglichen Ausführungspfad ein return geben, in deinem Fall gibt es, wenn eine Exception gefangen wird, kein return.

Eine Möglichkeit wäre, die Exceptions einfach weiterzuschmeißen, dann kannst du auch sinnvoll drauf reagieren.
Andere Möglichkeit, am Ende einen Default-Wert zu returnen.
 

Cromewell

Top Contributor
Wenn das try fehlschlägt returnt die Methode nichts.
Entweder musst du was in den catches returnen oder am Ende der Methode.

Edit: oh, zu spät x)
 

Roovy

Aktives Mitglied
Wie schmeiße ich die Exceptions denn weiter?
Wenn ich ja return(e) mit in die catches packe, weiß er wieder nichts, da hier die Variable ja keinen Inhalt hat!
 

Cromewell

Top Contributor
In der Methodendeklaration (halt Exception durch deine ersetzten ;)):
Java:
 public static int test() throws Exception{
    //code
}
 

mrBrown

Super-Moderator
Mitarbeiter
In der Methodendeklaration (halt Exception durch deine ersetzten ;)):
Java:
 public static int test() throws Exception{
    //code
}

sollte man allerdings nicht so schreiben, sonst muss man beim Aufruf Exception fangen, und fängt damit alles, auch das, was man nicht fangen will ;) Entweder alle einzeln, oder eine andere Exception, die die unterschiedlichen kapselt (und nicht Exception ist)
 

Roovy

Aktives Mitglied
sollte man allerdings nicht so schreiben, sonst muss man beim Aufruf Exception fangen, und fängt damit alles, auch das, was man nicht fangen will ;) Entweder alle einzeln, oder eine andere Exception, die die unterschiedlichen kapselt (und nicht Exception ist)
Und wie würde das dann ausshen?!
 
Zuletzt bearbeitet:

flopalko

Bekanntes Mitglied
Zum Unterschied: beim try-catch behandelst du direkt etwaige Exceptions, bei throws... machst du dem Caller deiner Funktion durch die Signatur klar, dass es in deiner Methode zu Exceptions kommen kann und diese behandelt werden sollen. Der Unterschied ist also wo die Exception behandelt wird.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
F Reason: Missing Constraint: Import-Package: okhttp3.internal.http; version="0.0.0" Allgemeine Java-Themen 0
F JDK src.zip missing Allgemeine Java-Themen 1
G UUencoding bring Fehlermeldung: No beginn line / Missing 'end' line Allgemeine Java-Themen 0
G array dimension missing Allgemeine Java-Themen 4
rosima26 Unterschiedliche Werte bei return/print Allgemeine Java-Themen 12
LimDul Direktes return eines Array geht nicht Allgemeine Java-Themen 20
E Hat der Compiler einen Fehler oder warumbeendet return nicht eine Methode ? Allgemeine Java-Themen 7
I Java Optionals mit return-Block Allgemeine Java-Themen 2
V int Array einer return Methode übergeben? Allgemeine Java-Themen 4
S OOP Objekte als Return-Werte: Einen Klon zurückgeben oder Instanz auf das Feld? Allgemeine Java-Themen 10
B XAResource[] return statement Allgemeine Java-Themen 3
V Wildcard aus Parameter in return type Allgemeine Java-Themen 2
P Return oder Global Allgemeine Java-Themen 3
W Rekursion-Probleme mit return Allgemeine Java-Themen 35
Dragonfire Code Konvention for-Schleife / return Allgemeine Java-Themen 15
B boolean return typ verwenden? Allgemeine Java-Themen 5
R return in try-catch-Blöcken Allgemeine Java-Themen 6
W return Collection mit schleife durchsuchen Allgemeine Java-Themen 10
H return bei Methode Allgemeine Java-Themen 2
chik 2 return werte für Greedy-Algorithmus (gelöst) Allgemeine Java-Themen 3
hdi dynamische return-Werte Allgemeine Java-Themen 15
M Problem mit return-werten Allgemeine Java-Themen 35
B Warum return type Object ? Allgemeine Java-Themen 4
D public boolean return Allgemeine Java-Themen 8
M return-Statement Allgemeine Java-Themen 5
S Wie Carriage Return Line Feed abfragen. Allgemeine Java-Themen 6
M java-doc: @return mehrzeilig gestalten Allgemeine Java-Themen 3
L return-Funktion Allgemeine Java-Themen 5
L return Funktion Allgemeine Java-Themen 6
G return bei generiertem code Allgemeine Java-Themen 6
S Fehler beim return eines String Arrays Allgemeine Java-Themen 3
Fredy Return by value mit String?? Allgemeine Java-Themen 6
N Datentypen If-Statement wird "übersprungen" Allgemeine Java-Themen 2
E Statement Multithread fähig? Allgemeine Java-Themen 2
N switch Statement Allgemeine Java-Themen 4
V ' maskieren in SQL-Statement? Allgemeine Java-Themen 47
W Dringend: WebService Select Statement aus xml Datei Allgemeine Java-Themen 11
I JAVA+ MySQL locales statement? Allgemeine Java-Themen 2
J Problem mit SQL-Statement Allgemeine Java-Themen 12
M Probleme mit nem SQL Statement Allgemeine Java-Themen 7

Ähnliche Java Themen

Neue Themen


Oben