Ausnahmen behandeln aber wie?!

java__neuling

Aktives Mitglied
Hallo,

habe da ein kleines Problem.

Ich habe einen kleinen Programmcode geschrieben in den eine eine exception behandelt werden soll

hier erstmal der code:

Java:
  public void teste(){

    if (form2dKonsole==null){   // Überprüfen ob das AusgabeObjekt existiert.
      System.err.println("Die View/Ausgabekonsole wurde nicht initialisiert.");
    }
    else {
      // Der Test wurde erfolgreich initialisiert

try {
      Kreis2dModell kreis2dModell = new Kreis2dModell(new Punkt2d(10,20),30/Math.PI);
      form2dKonsole.ausgabe(kreis2dModell);

      Rechteck2dModell rechteck2dModell = new Rechteck2dModell(new Punkt2d(10,20),30,40);
      form2dKonsole.ausgabe(rechteck2dModell);

	  Quadrat2dModell quadrat2dModell = new Quadrat2dModell(new Punkt2d(10,20),30);
	  form2dKonsole.ausgabe(quadrat2dModell);

} catch (IllegalModificationException e) { //Ausnahme behandeln aber wie!?
	System.out.println("Fehler!");
  }
      testErgebnis = true;



    }
  }

wie man an meinen kommentar erkennen kann, stelle ich mir die frage wie die ausnahme behandelt werden soll.
eventuell wird die ausnahme schon in irgendeiner weise behandelt aber so wie ich den codeschnipsel verstehe ist es so das, wenn eine exception auftritt nur das wort "fehler" ausgegeben wird aber letzentlich wird die ausnahme nicht richtig behandelt.

könnt ihr ein kleines bißchen licht ins dunkeln bringen?

danke und gruß
java neuling ;-)
 
wie die ausnahme behandelt werden soll.

Das hängt davon ab, was es für vernünftige Optionen gibt. "Vernünftig" heißt in diesem
Zusammenhang: Kann man das Programm in einem sinnvollen Zustand weiterlaufen lassen,
oder dem Benutzer die Gelegenheit geben auf den Fehler zu reagieren?

In den meisten Fällen läuft es aber darauf hinaus den Fehler zu loggen/auszugeben.
Und das geht etwas besser bzw. aussagekräftiger mit:

Java:
} catch (IllegalModificationException e) {
    e.printStackTrace();
}
 
Doch damit wird die Exception minimal behandet.

Es wird auf einen Fehler hingewiesen.

Behandeln von Außnahmen ist in seltenen Fällen der Weg die Außnahme zu verhindern im nachinein. Also du wirst diese Außnahme nicht im Code verhindern können.

Weil wenn du eine Liste vränderst über die du gerade iterierst, dann bekommst du eine KonkurentModException. Da die Änderung im Quellcode vorgesehen ist, wirst du sie nur durch Codeänderung abschaffen können.

Normalerweise würde man die Behandlung eher darin verstehen, dass die Exception zu einem bestimmten Zeitpukt gefangen und ordentlich protokolliert und entsprechende Aktionen zur Verhinderung eines Programmabstutzes einleiten.

Darunter verstehe ich:

- Fehlermeldung anzeigen für User
- Datenbanken zurückrollen um teilweise Fehlerhaften Transaktionen zu korrigieren
- Höchstens auf Defaultwerte zurückgreifen, wenn die Exception es fachlich erlaubt.
 
Hallo,

eine Exception besagt, dass Dein Programm nicht richtig weiter arbeiten kann, weil ein Fehler aufgetreten ist.
Zum Beispiel kann eine Datei nicht gefunden werden oder ein String nicht in eine int umgewandelt werden.

In solchen Fällen ist es die Aufgabe des Programmierers dafür zu sogen, dass das Programm trotzdem vernünfigt
weiter arbeiten kann, ohne das es kommentarlos im Nirwana endet.

Eine mögliche Behandlung könnte sein, den User zu einen erneuten Eingabe aufzufordern, oder eine Datei erst
zu erstellen bevor man darauf zugreift.
 
erstmal danke für die schnellen antworten!

wenn innerhalb meines programmcodes ein fehler auftaucht wird doch erstmal nur
das wort "fehler" ausgegegen, oder? und anschließend würde das programm abstürzen oder nicht?!
 
Ja es kommt eine Ausgabe "Fehler"

Und danach würde das Programm in diesem Fall normal beendet werden. Weil nach dem catch () auch nichts weiter ist.

Würde da noch mehr kommen, dann würde das auch weiter laufen.

Mach mal nach dem

Code:
      testErgebnis = true;
noch
Code:
System.out.println("Nach dem Catch");


Dann wirst du sehen,d ass das auch ausgeführt wird.
 
mhhhh danke für den tipp!

und wie kann ich so etwas nun richtig behandeln? anstatt einfach nur so eine dumme aussage auszugeben?

sorry, dass ich so blöde frage aber habe keine ahnung wie ist jetzt darauf reagieren müsste.....
 
Da musst du schauen, was sinnvoll ist.

Die frage ist, was kannst du tun?

Du solltest schonmal mehr Ausgaben machen.

Wie das geht steht weiter oben
 
Probier es mal damit aus. Die Methode "printStackTrace()" gibt sehr viel Informationen zu dem
Fehler aus (unter anderem auch den Namen der Datei und die Zeile in der der Fehler auftritt).

Wenn du an der Stelle aber einfach nur den Benutzer informieren willst, reicht es aus die
Fehlermeldung etwas ausführlicher zu schreiben. Hängt auch davon ab ob der Benutzer die
Ausgabe überhaupt sieht. Ist das ein Konsolenprogramm oder wandert die Ausgabe nur in eine
Log-Datei?
 
Also ich glaube du interpretierst den Begriff Ausnahme behandeln falsch bzw. hängst diesen viel zu hoch.

Du musst dir erstmal klar machen, dass Ausnahmen passieren und erstmal nichts schlimmes sind und du dieses zwar abfangen musst (wenn sie nicht dein Programm zum Absturz bringen sollen) aber dich nicht unbedingt behandeln.

Das behandeln ist hier ja öfter schon beschrieben worden: also Ausgaben an den user oder die Ausgabe des Fehlers in eine log-Datei oder wenn du die Chance hast den Fehler anderweitig zu beheben.

Aber wenn du eine Fehlermeldung ausgibst behandelst du den Fehler schon richtig, zumindest wenn du nicht anderweitig was gegen ihn unternehmen kannst. Also es gibt keine Aktion die du mit einer Exception unbedingt machen musst.

Ich hoffe ich konnte das ganze nochmal deutlich schreiben.
 
sorry, eine frage habe ich doch nocht!

klingt jetzt eventuell voll bescgeuert aber trotzdem noch eine frage.

ich habe hier folgenden codeschnipsel "gefunden"

Java:
llegalModificationException = new IllegalModificationException

darüber bin ich etwas verwirrt da dieser schipsel für mich als newbie so aussieht als ob
von meiner ausnahme klasse ein objekt erzeugt wird.
ich verstehe aber gar nicht warum man dies machen sollte?

wenn eine ausnahme auftritt wird diese behandelt und FERTIG!

also warum noch einobjekt meiner ausnhameklasse erzeugen?
oder anders formuliert in welchen fällen tut man dies denn überhaupt?!

mal wieder besten dank an euch! ;-)
 
Ist jetzt schwer zu beurteilen ohne den Context zu kennen in dem der Schnipsel auftritt. Aber
so eine Exception wird ja auch irgendwo im Code geworfen. Normalerweise schreibt man da aber
nur:

Java:
  throw new IllegalModificationException();
 
@gman

danke hast mir sehr geholfen.
da ich mit diverseb paketen und klasse arbeite ergeben sich immer wieder neue fehler in anderen klassen wenn ich kompelieren möchte..... :-(


wenn ich den bereits oben gezeigten quellcode kompelieren möchte erhalte ich nun folgende fehlermledung:




wäre wirklich super wenn ihr mich noch einmal einen tippp geben könntet!

danke und gruß
 
Zuletzt bearbeitet:

Zurück
Oben