Exception Handling

sicLotus

Bekanntes Mitglied
Hallo liebe Gemeinde,

ich habe leider ein paar Probleme mit dem oben genannten Thema.

Vorweg ist zu sagen, es geht hier nicht um die Frage "Wie könnte ich das Problem anders beheben" sondern vielmehr geht es dieses Problem mit Exception Handling zu beheben.

Ich habe ne Vielzahl von Ausgaben.

Ein kleiner Codeschnipsel:
Java:
try {
System.out.println("a");
System.out.println("b");
!!METHODE DIE EINE EXCEPTION WIRFT!!
System.out.println("c");
System.out.println("d");
}
catch {//nicht von interesse} ...

Wenn jetzt die Methode eine Exception wirft, wird in der Konsole ja folgendes ausgegeben:
a
b
+Fehlermeldung


Ich würde jetzt das gerne aber unterbinden! Es ist für mich wichtig, dass NUR die Fehlermeldung ausgegeben wird und kein a, b. Kann ich das irgendwie realisieren, das der Try Block nur ausgeführt wird, wenn er KEINE Exception wirft?

Mir ist bewusst das das mit if-else etc voll einfach zu lösen wäre, aber wie gesagt darum geht es hier nicht.

Hoffe ihr habt Ratschläge wie ich das ganze beheben kann.


Meine einzige andere Möglichkeit die mir einfällt wäre eventuell das ganze zu propagieren und an einer anderen Stelle irgendwie anders abzufragen, aber erstmal schaun was ihr mir sagt.
 
bevor Zeile 4 dran kommt werden 2 und 3 ausgeführt, das ist unumgänglich, steht dort Abschuss der Atomrakete, dann kann man nicht die Zeit zurückdrehen,
was an System.out gesendet wurde ist weg und nicht mehr zu verhindern,

denkbar wäre, die Ausgabe zu verzögern, alles erst in ein temporäres Objekt zu speichern welches am Ende dann an System.out weiterreicht wird oder auch nicht,
in Perfektion landet man bei Datenbanken oder ähnlich kontrollierten Systemen,
mit Transaktion Commit/ Rollback, Isolation vor anderen Nutzen usw, Stichwort ACID
ACID ? Wikipedia
 
Zuletzt bearbeitet von einem Moderator:
Das ist schade, ich habe gedacht dieses try wäre ähnlich wie folgendes:

- komplettes "durchtasten" des Blockes und anschließend bewerten
- sollte es als "zumutbar" durchgehen, wird alles ausgeführt
- ansonsten gar nichts..

Dann muss ich mir was anderes einfallen lassen, vielen dank für die Hilfe.
 
Du mußt doch nur die Reihenfolge ändern. Zeile 4 zwei Zeilen nach oben, und schon geht es.

Wenn Du die Reihenfolge nicht ändern willst, nimmst Du eben einen StringBuilder, schiebst da a und b rein, führst Deine Methode aus, schiebst c und d rein und gibst den StringBuilder aus.
Java:
try {
    StringBuilder sb = new StringBuilder();
    sb.append(a);
    sb.append(b);
    … /* Methode mit Ausnahme */
    sb.append(c);
    sb.append(d);
    System.out.println(sb);
} catch(…) {…}
 
Zuletzt bearbeitet:
Code:
PrintStream nirvana = new PrintStream(new ByteArrayOutputStream());
System.setOut(nirvana);
😀
 

Zurück
Oben