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.
Nachdem ich jetzt kein blassen hab wie es weiter geht, dacht ich, ich meld mich mal hier an und schau ob ihr mir helfen könnt^^.
Ich beschäftige mich gerade mit Exceptions und lese dazu das Kapitel in "Java ist auch eine Insel".
Um mir folgen zu können schaut ihr am besten auch mal rein und zwar hier:
Unten drunter heißt es: "Ein zweiter Schönheitsfehler ist der, dass die Variable f nun außerhalb des try-Blocks deklariert werden muss".
Ok versteh ich vollkommen das f raus muss. Aber sobald ich f außerhalb des try-block deklariere... soll ich f wieder in einem try block deklarieren ?!.... Was jetzt?
Ok versteh ich vollkommen das f raus muss. Aber sobald ich f außerhalb des try-block deklariere... soll ich f wieder in einem try block deklarieren ?!.... Was jetzt?
Nein, es geht nur um den finally-Block.
f muss da (aber nicht deklariert werden) wieder in ein try-catch-Konstrukt . Und das, meint der Autor, wäre ein Schönheitsfehler.
Ok versteh ich vollkommen das f raus muss. Aber sobald ich f außerhalb des try-block deklariere... soll ich f wieder in einem try block deklarieren ?!.... Was jetzt?
Solange die Variable außerhalb des try-catch-Blocks nur deklarierst (wie im Listing 6.10), dann ist doch alles OK - wieso sollst du sie dann wieder in einem try-catch-block deklarieren?
Ich weise mal darauf hin, das Unterschiede zwischen Deklaration und Definition gibt.
Java:
RandomAccessFile f = null;
Hier wird f deklariert und definiert, damit f im Scope der Funktion bekannt, aber mit null initialisiert (definiert).
Java:
try
{
f = new RandomAccessFile( "duke.gif", "r" );
In try-Block wird nun f "richtig" initialisiert (definiert), keine Deklaration mehr, da ja bereits erfolgt. Daher kann im finally-Block weiterhin auf f zugegriffen werden, weil es ja noch in Scope ist.