Beispiel für sinnvolles finally?

Status
Nicht offen für weitere Antworten.

Michi

Mitglied
Hi,

hat jemand mal ein Beispiel für ein finally, in dem es einen praktischen Nutzen erfüllt oder ist finally allgemein formell-ästethischer Art? Ich mein, ich kann doch etwas, das so oder so ausgeführt wird - also ob ein Fehler aufgetreten ist oder nicht - auch außerhalb eines finally-Blocks schreiben, ist der Effekt da nicht der gleiche?

Ciao!
Michi
 
R

Roar

Gast
Code:
InputStream einStream = ...;
try {
   einStream.read(blupp);
} catch(IOException ex) {
   // blzpp
} finally {
   einStream.close();
}
 
S

stev.glasow

Gast
Code:
public void getSomeDataFromDB(String query) throws SQLException {
   Connection con = ...;
   try{
      con.exec(query);

   }
   finally{
      con.close(); 
  }
}
 

Michi

Mitglied
Sorry, ich versteh den Sinn von finally nicht... Das sind für mich ja auch wieder zwei Beispiele, wo man es doch einfach weglassen könnte. Im zweiten Fall braucht mans halt, weils Java so will, aber man könnte das close doch genauso auch ausm finally rausnehmen. Ich verstehe nicht, was durch das finally vom Ablauf her (!) anders wird oder sollte es echt so sein, dass Programme dadurch lediglich schöner zu lesen sein sollen?
 
S

stev.glasow

Gast
Zu meinem Beispiel, wenn du es ohne finally machen würdest:
Code:
public void getSomeDataFromDB(String query) throws SQLException {
   Connection con = ...;
   con.exec(query);
   con.close();
}

würde er die Verbindung nicht schließen wenn con.exec(query); eine SQLException geworfen wird, da er gar nicht mehr zu der Zeile con.close(); gelangt, was bei der finally Variante nicht der fall wäre da er den finally Block immer ausführt egal ob eine Exception geworfen wurde oder nicht.
Sprich der finally-Block wird ausgeführt nachdem der try oder catch block ausgeführt wurde oder bevor die Methode durch ein return oder durch das Werfen einer Exception verlassen wird (komisches Deutsch).
 

DP

Top Contributor
stevg hat gesagt.:
Code:
public void getSomeDataFromDB(String query) throws SQLException {
   Connection con = ...;
   try{
      con.exec(query);

   }
   finally{
      con.close(); 
  }
}

da muss dein con.close aber auch wiederum im finally-block in ein try/catch rein
 
S

stev.glasow

Gast
Das is doch nur ein Beispiel. Die Klasse Connection ist nur ausgedacht und kann in diesem Fall keine Exception werfen.
Aber nagut:
Code:
public void getSomeDataFromDB(String query) throws SQLException, ConnectionException {
   Connection con = ...;
   try{
      con.exec(query);

   }
   finally{
      con.close();
  }
}
 
R

Roar

Gast
DP hat gesagt.:
stevg hat gesagt.:
Code:
public void getSomeDataFromDB(String query) throws SQLException {
   Connection con = ...;
   try{
      con.exec(query);

   }
   finally{
      con.close(); 
  }
}

da muss dein con.close aber auch wiederum im finally-block in ein try/catch rein
ne die SQLException wird ja weitergeleitet. udn wenn man die connection nich shcließen kann ist sie wohl shcon geschlossen dann muss man nix mehr schließen :bae.
 
S

stev.glasow

Gast
Wenn con.close(); eine Exception werfen kann muss die abgefangen werden, oder was meinst du?
 

Michi

Mitglied
stevg hat gesagt.:
Sprich der finally-Block wird ausgeführt nachdem der try oder catch block ausgeführt wurde
So weit, so gut, so klar. Nur hab ich da bisher keinen Vorteil im finally gesehen.

stevg hat gesagt.:
oder bevor die Methode durch ein return oder durch das Werfen einer Exception verlassen wird (komisches Deutsch).

Ich denke, das ist der entscheidende Punkt, der dem finally einen Sinn gibt.
Bevor eine Methode durch ein return im catch-Teil beendet wird, wird noch finally aufgerufen...
Ansonsten kann mans ja so gesehen auch weglassen, aber sobald im catch-Teil was drin ist, was zur Beendigung der Methode führt, macht finally Sinn, das ist es! :D
 
S

stev.glasow

Gast
Man will die Verbindung ja auch schließen wenn kein Fehler kommt oder meinst du was anderes?
 
G

Guest

Gast
Sicher war's so gemeint
Code:
public void getSomeDataFromDB(String query) throws SQLException { 
  Connection con = ...; 
  try{ 
    con.exec(query); 
  } 
  catch(SQLException e) {
    logger.error(e);
    throw e;
  }
  finally{ 
    con.close(); 
  } 
}
 

Bleiglanz

Gesperrter Benutzer
der Vorteil (das Besondere) von finally ist, dass der Block auch dann ausgeführt wird, wenn im try eine Exception fliegt, die NICHT abgefangen wird

=> in diesem Fall würde ja normalerweise einfach abgebrochen und das ganze an den Aufrufer zurückgegeben...; nur mit finally kannst du auf diesen Fall reagieren!
 

Bleiglanz

Gesperrter Benutzer
ja - aber wenn sie "weiter oben" abgefangen und korrekt behandelt wird, muss man "unten" trotzdem noch ein ressource.close() absetzten -
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
J Suche simples Beispiel für die EOFException Java Basics - Anfänger-Themen 1
D Klassen Gesucht: Einfache Beispiel-Klasse für einen Datentyp Java Basics - Anfänger-Themen 7
B Erste Schritte HILFE Brauche ein Beispiel für korrekte Syntax mit Semantikfehlern Java Basics - Anfänger-Themen 6
T Erste Schritte für was steht das "this" in dem Beispiel... Java Basics - Anfänger-Themen 2
M Kann kein Objekt (AudioFile in diesem Beispiel) für ein leeren String erzeugen Java Basics - Anfänger-Themen 3
M Gutes Beispiel für Exception- werfende & behandelnde Methode Java Basics - Anfänger-Themen 5
M Beispiel für Linked List Java Basics - Anfänger-Themen 9
S Gutes Beispiel für Vererbung? Java Basics - Anfänger-Themen 14
M Brauche ein Beispiel für eine set() get() Methode Java Basics - Anfänger-Themen 4
S Beispiel für abgestufte Preisliste Java Basics - Anfänger-Themen 2
H Beispiel für Schriftfarben Java Basics - Anfänger-Themen 8
T Beispiel Polymorphie, Tier hund = new Hund(); Java Basics - Anfänger-Themen 3
J Fehlerbehandlung an einem Beispiel Java Basics - Anfänger-Themen 8
U Beispiel Methode size() vom "Collection"-interface... Wie kann man sichtbar machen, was die Methode unter der Haube macht? Java Basics - Anfänger-Themen 8
Blndner Auto Beispiel Java Basics - Anfänger-Themen 4
melisax Beispiel Java umprogrammieren Java Basics - Anfänger-Themen 23
dieter000 Frage zu einem Beispiel... Java Basics - Anfänger-Themen 5
dieter000 Hilfe bei dem Beispiel, wie gehe ich sowas am besten an? Java Basics - Anfänger-Themen 32
marcooooo Kann mir jemand das Beispiel kurz erklären so ungefähr:/ Java Basics - Anfänger-Themen 7
marcooooo Frage zu bestimmten Beispiel Java Basics - Anfänger-Themen 31
NeoLexx equals()-Methode Verständnis Frage anhand Code Beispiel Java Basics - Anfänger-Themen 22
C Beispiel-Code mit Pair wird nicht compiliert. Java Basics - Anfänger-Themen 8
B Webhooks verstehen - Beispiel? Java Basics - Anfänger-Themen 25
B Java Vererbung Fragen (zu Code Beispiel) Java Basics - Anfänger-Themen 3
J For-Schleife (Beispiel) Java Basics - Anfänger-Themen 6
G Rekursion Beispiel Java Basics - Anfänger-Themen 3
H OOP, wie gehts richtig? (Beispiel von meinem Prof) Java Basics - Anfänger-Themen 6
O Wert in einer URL hinzufügen (in meinem Beispiel Google) Java Basics - Anfänger-Themen 7
F jscience Beispiel Java Basics - Anfänger-Themen 0
B Erste Schritte Way of life ohne import - Habe Beispiel, macht Unfug Java Basics - Anfänger-Themen 21
J Kompilieren von HelloWorld Beispiel schlägt fehl Java Basics - Anfänger-Themen 7
Z Schleifen Beispiel: Fakultät Java Basics - Anfänger-Themen 26
M Frage zum generellen Verständiss von OO an einem Beispiel Java Basics - Anfänger-Themen 4
L GridLayout, Beispiel? Java Basics - Anfänger-Themen 2
M Wozu Upcasting? Am Beispiel List = ArrayList Java Basics - Anfänger-Themen 2
L Beispiel Projekte Java Basics - Anfänger-Themen 3
V Objekte/Klassen erstellen - Erklärung anhand Beispiel Java Basics - Anfänger-Themen 4
J Interface Frage zu Interfces am Beispiel Observer Pattern Java Basics - Anfänger-Themen 8
B Grundlagen von Methoden an folgendem Beispiel Java Basics - Anfänger-Themen 52
E Polymorphie Beispiel Polymorphie Java Basics - Anfänger-Themen 2
M Threads am Beispiel Parkhaus Java Basics - Anfänger-Themen 10
G OOP Beispiel Objekte zugreifen Java Basics - Anfänger-Themen 3
M Suche Beispiel-Spiel Java Basics - Anfänger-Themen 3
M Ganz einfaches Beispiel, finde den Fehler aber nicht :( Java Basics - Anfänger-Themen 2
A Frage zu Beispiel eines Dekorierers von InputStream Java Basics - Anfänger-Themen 4
P wie oop an diesem beispiel verbessern? Java Basics - Anfänger-Themen 31
K return-Anweisung am Beispiel eines Palindroms Java Basics - Anfänger-Themen 18
P Datentypen Warum würde dieses Beispiel nicht funktionieren? Java Basics - Anfänger-Themen 6
V KeyListener Beispiel Java Basics - Anfänger-Themen 13
S Objektidentität und gleichheit an diesem Beispiel Java Basics - Anfänger-Themen 7
S Komposition beispiel anhand eines kopierers Java Basics - Anfänger-Themen 4
H Webservice - Einfaches Beispiel Java Basics - Anfänger-Themen 2
b101 OOP Beispiel Klausur Aufgabe der FH Java Basics - Anfänger-Themen 22
T Java Beispiel Bitte helft mir Java Basics - Anfänger-Themen 5
Gonzalez Eingabe des Benutzers mittels readLine()-Methode. Klappt in meinem Beispiel nicht! Java Basics - Anfänger-Themen 7
V Präinkrement Beispiel Java Basics - Anfänger-Themen 14
M Swing Beispiel Java Basics - Anfänger-Themen 2
M [Einfaches Beispiel] Problem mit innere Klassen Java Basics - Anfänger-Themen 4
M Beispiel-Webprojekt: Statt HSQLDB Postgres verwenden Java Basics - Anfänger-Themen 12
M Serialisierung erstes Beispiel Java Basics - Anfänger-Themen 4
razwed4ik zum Beispiel aus Java Insel Buch Java Basics - Anfänger-Themen 7
M DBCP - Kleines Beispiel Java Basics - Anfänger-Themen 3
M Data Access Object - Beispiel Java Basics - Anfänger-Themen 11
A programmier beispiel Java Basics - Anfänger-Themen 18
A ausgabe eines arrays - einfaches beispiel Java Basics - Anfänger-Themen 4
Z Beispiel Würfelspiel mit Verwendung von Feldern Java Basics - Anfänger-Themen 7
Q POI Beispiel Programme Java Basics - Anfänger-Themen 2
J Das schöne Bouncing Ball Beispiel. Java Basics - Anfänger-Themen 20
N Java Insel - RMI Beispiel Java Basics - Anfänger-Themen 12
J Plymorphismus - unklarheit zu einem Beispiel Java Basics - Anfänger-Themen 6
I Hilfe beim Java-Applet Beispiel Java Basics - Anfänger-Themen 27
G konkretes beispiel: interface hier besser als abstrakte kl. Java Basics - Anfänger-Themen 4
M Komische Syntax bei Double-Buffering-Beispiel Java Basics - Anfänger-Themen 2
M Brauche Hilfe bei Beispiel. Java Basics - Anfänger-Themen 4
S Wrapper-Pattern Beispiel Java Basics - Anfänger-Themen 2
S Model-View-Controller Konzept Beispiel Java Basics - Anfänger-Themen 11
E Fehler im Beispiel? Java Basics - Anfänger-Themen 3
B Was ist falsch an dem beispiel? Java Basics - Anfänger-Themen 4
B schon beim einsteiger-beispiel durchgefallen. Java Basics - Anfänger-Themen 2
M Einfache HTML Mail versenden , suche Beispiel Java Basics - Anfänger-Themen 5
G einfaches jdialog beispiel Java Basics - Anfänger-Themen 1
D Beispiel-Servlet erstellen Java Basics - Anfänger-Themen 4
G Rekursiv-Beispiel; Wer erklärt mir... Java Basics - Anfänger-Themen 9
B Oberflaecheprog einfaches beispiel (button action listener) Java Basics - Anfänger-Themen 5
M Code aus IntelliJ in "Textform" für Word-Paper? Java Basics - Anfänger-Themen 3
G Icon für App Java Basics - Anfänger-Themen 1
Kerstininer Vererbung Hilfe beim lernen von Objektorientierung für eine Klausur Java Basics - Anfänger-Themen 10
Sniper1000 Java 391 für Windows Java Basics - Anfänger-Themen 37
P Wieso kann ich als Index für einen Array einen Char angeben? Java Basics - Anfänger-Themen 3
benny1993 Java Programm erstellen für ein Fußball-Turnier Java Basics - Anfänger-Themen 3
V Durchschnittliche Volatility in Prozent für 4 Stunden berechnen Java Basics - Anfänger-Themen 14
P Welches SDK für das erstellen einer ausführbaren Datei? Java Basics - Anfänger-Themen 4
C negamax-Algorithmus für Tic-Tac-Toe spielt manchmal falsch Java Basics - Anfänger-Themen 10
D Apache HTTPClient für alle Fälle Java Basics - Anfänger-Themen 41
J Layout Manager, welcher ist der Richtige für mein Program? Java Basics - Anfänger-Themen 1
J Fehlermeldung unverständlich für Jakarta Java Basics - Anfänger-Themen 17
M Minimax-Algorithmus für Vier gewinnt Java Basics - Anfänger-Themen 11
M GUI für Vier-Gewinnt. Java Basics - Anfänger-Themen 4
I JPA Query für mehrere Klassen Java Basics - Anfänger-Themen 3
D Quellcode für cmd funktioniert nicht Java Basics - Anfänger-Themen 9

Ähnliche Java Themen

Neue Themen


Oben