Datenübergabe bei Funktionen

  • Hallo zusammen,


    sorry für sehr grundlegende Frage, aber irgendwie komme ich nicht weiter und brauche einen Denkanstoß:


    Ich bin noch recht frisch in der Java-Programmierung und habe soweit mitbekommen, dass es keine Call-By-Reference-Parameter gibt.
    Nun möchte ich aber eine Methode schreiben, die mir Daten zurückliefert.


    Nennen wir diese zB. OpenDatabase. Der Rückgabewert sollte bool sein (Öffnen der DB erfolgreich oder nicht).
    Nun hab ich mir in C++ bei einigen Dingen angewohnt, auch gleich automatisch einen Fehlertext zu generieren und diesen als Refernzparameter zu übermitteln.


    Sieht dann zB. so aus:

    Code
    bool OpenDatabase(CString dbName, CString dbPath, CString &errorText);
    ...
    // Main
    if (!OpenDatabase(dbName, dbPath, errorText))
      AfxMessageBox(errorText);


    Wie kann ich sowas in Java nun bewerkstelligen?


    Eine möglichkeit wäre natürlich, einfach einen String als Rückgabeparameter zu definieren statt des bools (Leerer String als Rückgabe bedeutet kein Fehler, ...).
    Diese Möglichkeit gefällt mir nur nicht sonderlich und ich würde gerne den bool als Rückgabeparameter behalten.


    Gibt es Alternativen? Wenn ja, welche?


    Danke, mfg
    mik

  • Eher gar nicht in Java. Du solltest zur Fehlerbehandlung exceptions benutzen:


    void OpenDatabase(String dbName, String dbPath) throws Exception
    {
    // wichtiges zeug
    if(fehler1Aufgetreten)
    throw new Exception("Fehler 1");


    // weiter im Code
    if(fehler2Aufgetreten)
    throw new Exception("Fehler 2");


    // usw
    }



    // Main
    try
    {
    OpenDatabase(dbName, dbPath);
    }
    catch(Exception e)
    {
    MessageBox(e.getMessage());
    }

  • Hallo,


    Stimme meinem Vorredner zu. Exceptions sind in Java ein geeignetes Mittel, wenn du aber drauf bestehst kannst du es auch anders machen , also so wie du es beschrieben hattest:



    Das wäre eine andere Variante.


    gruß joensen

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!