Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
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?
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:
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.
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.
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?!
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.
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?!
Exceptions sind Klassen wie alles anderes in Java auch. Bei einem Fehler wir ein Objekt von einer Exception-Klasse erzeugt und "geworfen"(throw). Du kannst sogar eigene Exceptions schreiben(einfach ein Klasse die von Excepion erbt)
Hier mal ein ausführliches Tutorial: Lesson: Exceptions (The Java™ Tutorials > Essential Classes)
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:
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!