Konzeptuelles Problem mit Exceptions

Status
Nicht offen für weitere Antworten.

Krabat

Bekanntes Mitglied
Ich habe mir überlegt wie mein Programmablauf sein soll und bin nun ein wenig unsicher beim Einsatz von Exceptions geworden, also:

Ich habe eine HauptMethode, die versucht etwas in einer Datenstruktur zu finden (durch Aufruf einer UnterMethode).
Falls das klappt, sollen die Daten an die HauptMethode zurückgegeben werden, danach ein JTable ge-updatet werden.
Falls das nicht klappt, soll (in der UnterMethode) eine Exception geworfen werden, DataNotFoundException o.ä., dann soll in der HauptMethode darauf regiert werden (muß also wahrscheinlich in den catch block) indem versucht wird die Daten übers Netzwerk zu beschaffen (wieder Aufruf einer UnterMethode).
Falls das klappt, werden die Daten an die HauptMethode zurückgegeben, JTable ge-updatet und die Daten in die Datenstruktur übertragen.
Falls das übers Netzwerk auch nicht klappt, soll (in der UnterMethode an die HauptMethode im catch block) eine Exception geworfen werden und der Fehler ausgeben werden.

Nun mein Problem: ich habe den Eindruck, dass bei diesem Anwendungsfall der Nutzen von Exceptions eher gering ist oder vielmehr die Übersichtlichkeit stark leiden würde. Aber sind Exceptions nicht für diese Probleme da? oder begehe ich einen grundsätzlichen Fehler? Wenn im catch block eine weiteres try/catch steht mit Methodenaufruf, welcher vielleicht wieder eine Exception werfen kann, usw...
Danke, daß Ihr versucht durch meinen oberern Text durchzusteigen.

Grüsse!
Krabat


[edit: Rechtschreibfehler verbessert]
 
Vermutlich isses zu unübersichtlich als Frage formuliert...
Ich versuche es nochmal in Pseudocode zu verdeutlichen:

Code:
public void someMethod() {
  String[][] data;
  try {
    data = getLocalData();    // is able to throw DataNotFoundException
    updateTable(data);
  }
  catch (DataNotFoundException e) {
    try {
      data = getNetworkData();  // is able to throw DataNotFoundException
      updateTable(data);
      updateLocalData(data);
    }
    catch (DataNotFoundException e) {
        // Error handling
    }
    
  }

}

Was mich verunsichert, ist ein weiteres try/catch innerhalb des catch Blockes, das sieht mir nach nicht sonderlich gutem Stil aus, ich wüßte aber auch nicht wie ich es besser machen könnte, zumal im zweiten catch Block wieder ein Methodenaufruf stehen könnte, der ein try/catch benötigen würde und dann wirds doch echt zu unübersichtlich, oder?

Wie würdet Ihr das lösen?
 
ich hätte damit kein problem:
du versuchst erst lokal an die Daten zu kommen - wenn das net klappt dann übers netzwerk....

Wenn danach alle Möglichkeiten ausgeschöpft sind, dann gib den Fehler aus und hör auf oder was auch immer
 
hmm...
also hättest Du das an dieser Stelle ebenso mit Exceptions / try/catch Blöcken gelöst wie angeben?


Eine Variation hiervon wäre auch, wenn ich die Exception im zweiten Fehlerfall eine Hirarchieebene höher weiterleite. Wie wär das?

Code:
public void someMethod() throws DataNotFoundException {
  String[][] data;
  try {
    data = getLocalData();    // is able to throw DataNotFoundException
    updateTable(data);
  }
  catch (DataNotFoundException e) {
      data = getNetworkData();  // is able to throw DataNotFoundException
      updateTable(data);
      updateLocalData(data);
  }

}
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben