Ich bin Überprüfung die neuen Funktionen von Java SE7 und ich bin zur Zeit an dieser Stelle:Java catch-Block, gefangen Ausnahme ist nicht endgültig
http://docs.oracle.com/javase/7/docs/technotes/guides/language/catch-multiple.html
in Bezug auf die mehrfache Funktion zu fangen, wenn ich über diese kam Anweisung:
Hinweis: Wenn ein catch-Block mehr als einen Ausnahmetyp behandelt, ist der Catch-Parameter implizit endgültig. In diesem Beispiel ist der Parameter catch final und kann daher innerhalb des catch-Blocks keine Werte zuweisen.
Ich habe nie bemerkt, dass die gefangene Ausnahme im klassischen Fall von handling gefangener Ausnahmen nicht endgültig ist.
Ich frage mich nur, warum ist das überhaupt eine gute Sache? Wäre es nicht unklug, eine abgefangene Ausnahme zu ÄNDERN, bevor ich sie neu aufnehme oder vielleicht ihre Nachricht protokolliere? Sollte es nicht der Trowing-Mechanismus sein, um die Ausnahme zu erstellen, so stellt es genau das dar, was es sollte?
Ich habe noch nie eine Ausnahme gesehen, die im Catch-Block geändert wurde, kann vielleicht jemand darauf hinweisen, dass es Vorteile hat?
Danke!
Uh, gut, ich wusste nicht einmal, dass es im "single exception" -Fall nicht final war ... – fge
Was wäre der Unterschied, wenn es endgültig wäre, da nur der catch-Block von diesem Objekt weiß? Spielt es eine Rolle, ob du dieses oder ein anderes Objekt wieder in Angriff nimmst? in den meisten Fällen die Ausnahme, wenn sie in eine andere eingepackt und erneut aufgetaut wird. Wenn es endgültig war, könnte man eine modifizierte Kopie noch einmal nachholen. –
Der einzige Grund, an den ich denken konnte, ist, wenn Sie aus irgendeinem Grund mit der Methode setStackTrace() für die Ausnahme die Stack-Ablaufverfolgung bearbeiten oder hinzufügen möchten. – MasNotsram