try finally - Streams schließen

Cola_Colin

Top Contributor
Ich habe dieses Konstrukt vor mir:
Java:
        Reader settingsStream = null;
        FileInputStream filein = null;
        ZipInputStream zipin = null;
        try {
// Tue etwas für diese Frage uninteressantes 
        } catch (Exception ex) {
            GameRoot.logError(ex);
        } finally {
            try {
                if (filein != null) {
                    zipin.close();
                    filein.close();
                }
                settingsStream.close();
            } catch (Exception ex) {
            }
        }
Streams soll man ja innerhalb eines finally schließen, vor allem weil hier auch mal Exceptions auftreten werden. Nun wirft aber close auch wieder eine Exception, was ein weiteres try erfordert.
Tritt bei zipin.close schon eine Exception auf, so wird filein schon nicht mehr geschlossen.
Noch ein paar mehr tries zu verschachteln halt ich für schwachsinnig.

Aber was dann ?!
 

Der Müde Joe

Top Contributor
>Aber was dann ?!

Bau dir ne Utils Klasse
Java:
public class IOUtils {

public static final void safeClose(InputStream in) {
if(in != null){
try { in.close(); } catch(IOException e) { /* whatever */}
}
}

und das gleich für OutputStream, Reader, Writer, PreparedStatement.....

EDIT:
oder gleich sowas
Commons IO - Home
 
Zuletzt bearbeitet:
M

maki

Gast
Dein finally Block ist falsch.

Wenn zipin.close() IOException wirft, wird der Stream nicht geschlossen, dasselbe bei filein.close().
 

Cola_Colin

Top Contributor
Ok, wird gemacht.
EDIT:
@Maki:
Ja das ist ja das Problem das ich da auch sehe ?!

2ndEdit:

Über das Interface Closeable geht das sogar recht komfortabel.
[Java]
public class IOUtils {
public static final void safeClose(Closeable in) {
try { in.close(); } catch (Exception e) {}
}
}
[/Java]

Sollte man da bei einer Exception noch irgendwas machen ?
 
Zuletzt bearbeitet:

Der Müde Joe

Top Contributor
Nö. Was den auch...
Aber null check wäre nicht schlecht.

EDIT:
da evtl Streams im try noch null sind wen schon von einem anderen eine Exception fliegt.
 

eRaaaa

Top Contributor
Mhmm...wenn die Streams verkettet sind(so wie hier in dem Beispiel wahrscheinlich) reicht es aber allerdings den äußersten Stream zu schließen?!
Also würde es hier doch reichen nur [c]zipin[/c] zu schließen? ???:L
 

Cola_Colin

Top Contributor
Null Check macht Sinn und wird auch gebraucht.

In der Tat sind da zwei der Streams verkettet.
zipin ist ein ZipInputStream der auf filein aufbaut.

settingsStream kann jedoch auch ein anderer sein.

Problem sollte gelöst sein.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
A Exception handeling mit finally und objektreferenzen Java Basics - Anfänger-Themen 6
B try catch finally Java Basics - Anfänger-Themen 2
K JOptionPane/catch/try/finally/if Java Basics - Anfänger-Themen 9
O Finally beim Fenster schliessen Java Basics - Anfänger-Themen 3
H Geht dieser Code noch einfacher (try catch finally) Java Basics - Anfänger-Themen 7
S try-catch-finally-Problem Java Basics - Anfänger-Themen 10
T Sinn von finally? Java Basics - Anfänger-Themen 3
N try and catch block in finally Java Basics - Anfänger-Themen 8
J finally Java Basics - Anfänger-Themen 5
M try finally Java Basics - Anfänger-Themen 4
F Fehlerbehandlung finally weglassen?? Java Basics - Anfänger-Themen 4
S sauberer Stil von return Wert (try, catch, finally) Java Basics - Anfänger-Themen 9
I Frage zu Try - Catch - Finally Java Basics - Anfänger-Themen 10
T try-catch-finally Java Basics - Anfänger-Themen 8
U catch mit finally Java Basics - Anfänger-Themen 5
G InputStream im finally-Block schließen Java Basics - Anfänger-Themen 7
M Beispiel für sinnvolles finally? Java Basics - Anfänger-Themen 17
T Programm so abbrechen, dass finally ausgeführt wird Java Basics - Anfänger-Themen 7
krgewb Java Streams Java Basics - Anfänger-Themen 10
A Parallel Streams Java Basics - Anfänger-Themen 18
W Streams in Java und was bedeutet meine Konsolen-Ausgabe? Java Basics - Anfänger-Themen 4
M Streams Java Basics - Anfänger-Themen 34
M Streams filter Java Basics - Anfänger-Themen 15
M generate Methode für Streams Java Basics - Anfänger-Themen 6
berserkerdq2 Java streams, wann nutze ich ::, also 2x Doppelpuntk bei Streams? Java Basics - Anfänger-Themen 5
B Produkt eines double - streams Java Basics - Anfänger-Themen 3
berserkerdq2 IO Streams logfile erstellen und Sachen schreiben wie? Java Basics - Anfänger-Themen 2
D Verwirrung bei Streams aus primitiven Arrays Java Basics - Anfänger-Themen 2
B Collections Streams - Hilfestellung bei komplexer Struktur Java Basics - Anfänger-Themen 9
S Streams - Abfrage absteigend sortieren Java Basics - Anfänger-Themen 11
S Streams - kleinstes Element finden Java Basics - Anfänger-Themen 4
J String Array zu Map<Character, List<Character>> mit Streams Java Basics - Anfänger-Themen 1
Kirby.exe Fehlende Int Werte aus Array mit streams finden Java Basics - Anfänger-Themen 19
W Eclipse Autoformatierung für Streams ändern ? Java Basics - Anfänger-Themen 1
S Lambda Ausdrücke Streams Java Basics - Anfänger-Themen 6
I Streams Java Basics - Anfänger-Themen 12
N Frage zu Streams Java Basics - Anfänger-Themen 3
U Input/Output Unterschiede Streams Java Basics - Anfänger-Themen 2
X Streams und Ausgabe - lässt sich das einfacher schreiben oder schöner schreiben? Java Basics - Anfänger-Themen 5
C system.out.printf mit streams benutzen Java Basics - Anfänger-Themen 7
C Methoden Sortieren mit Streams: Auf- und absteigend Java Basics - Anfänger-Themen 2
O Streams und die flush Methode Java Basics - Anfänger-Themen 3
P InputStream eines Musik-Streams abspielen Java Basics - Anfänger-Themen 2
M Input/Output Streams Java Basics - Anfänger-Themen 5
T Klassen wie funktionieren Streams, warum bekomme ich int zurück? Java Basics - Anfänger-Themen 2
J Java 8 Streams - Frage zu "reduce" Java Basics - Anfänger-Themen 6
Sogomn Input/Output Reader, Writer und Streams Java Basics - Anfänger-Themen 6
T Fehler mit Streams! Java Basics - Anfänger-Themen 2
T Input/Output Object Streams Java Basics - Anfänger-Themen 6
J Per I/O Streams in LinkedList oder ArrayList schreiben/lesen Java Basics - Anfänger-Themen 6
I Java Streams Java Basics - Anfänger-Themen 6
R Streams for runaways Java Basics - Anfänger-Themen 5
RySa Input/Output Datei kann nicht gelöscht werden, obwohl Streams geschlossen sind. Java Basics - Anfänger-Themen 2
D Input/Output streams und readLine() Java Basics - Anfänger-Themen 3
firefexx Input/Output close() bei mehreren Streams Java Basics - Anfänger-Themen 5
M Frage zu Streams Java Basics - Anfänger-Themen 9
M Streams und Sockets Java Basics - Anfänger-Themen 3
M file löschen, streams evtl noch offen Java Basics - Anfänger-Themen 7
G Character-orientierte File-Streams mit der Klasse FileReader Java Basics - Anfänger-Themen 5
S Piped Streams / Threads Java Basics - Anfänger-Themen 6
H Frage zu Byte-Streams Java Basics - Anfänger-Themen 2
P Streams mit Sockets Java Basics - Anfänger-Themen 7
V Performance Lesen und Schreiben aus/in Streams Java Basics - Anfänger-Themen 4
C RandomAccessFile vs. Streams Java Basics - Anfänger-Themen 5
M Probleme mit den Streams Java Basics - Anfänger-Themen 2
G streams schließen Java Basics - Anfänger-Themen 2
P Fragen zu STreams Java Basics - Anfänger-Themen 5
M Streams Java Basics - Anfänger-Themen 4
H Streams etc. erster Versuch Zeilen aus einer Datei zu lesen Java Basics - Anfänger-Themen 6
? Streams Java Basics - Anfänger-Themen 2
R RandomAccessFile mit anderen Streams verbinden Java Basics - Anfänger-Themen 5
G Rekursionsaufgabe mit Streams Java Basics - Anfänger-Themen 5
J Problem mit Streams Java Basics - Anfänger-Themen 15
L Streams und Reader/Writer Java Basics - Anfänger-Themen 8
K Frage zu SdtOut streams bzw. Socket Programmierung Java Basics - Anfänger-Themen 3
M Streams, read and write Java Basics - Anfänger-Themen 2
M Streams Java Basics - Anfänger-Themen 2
B Streams wollen scheinbar nicht schließen Java Basics - Anfänger-Themen 6
S Umwandlung eines Character-Streams in ein Image Java Basics - Anfänger-Themen 17
E Probleme mit Streams Java Basics - Anfänger-Themen 3
T j.u.Scanner(Sys.in).nextLine() wieder schließen? Java Basics - Anfänger-Themen 5
berserkerdq2 Wann soll ich den Stream schließen, wenn ich das in einer Methode habe? Java Basics - Anfänger-Themen 8
T jOptionPane zum schließen von Fenster, wie "Ja" und "Nein" anstatt Yes und No Java Basics - Anfänger-Themen 2
JEP1 Java Dialog Fenster schließen Spiel Java Basics - Anfänger-Themen 0
F Terminal Windows per Befehl schließen? Java Basics - Anfänger-Themen 9
N Speichern von Werten in Variablen nach Schließen des Programms Java Basics - Anfänger-Themen 3
L Scanner schließen in While-Schleife? Java Basics - Anfänger-Themen 2
CptK Interface Klasse Frame (extends JFrame) aus anderer Klasse schließen Java Basics - Anfänger-Themen 7
F Java Programm schließen Java Basics - Anfänger-Themen 1
F Interface JFrame mit if-Abfrage automatisch schließen lassen? Java Basics - Anfänger-Themen 3
R Eine Schleife durch eine Methode schließen? Java Basics - Anfänger-Themen 4
J Seite öffnen und schließen Java Basics - Anfänger-Themen 2
b1ck Scanner schließen, erneute Verwendung Java Basics - Anfänger-Themen 12
A Input/Output Datenströme schließen in eigener Methode Java Basics - Anfänger-Themen 5
H Klassen Von Instanzvariablen auf Instanz schließen Java Basics - Anfänger-Themen 21
D JFrame - 10 Sekunden bis zum schließen warten. Java Basics - Anfänger-Themen 2
A Dialog schließt erst nach 2x Klicken auf Schließen Java Basics - Anfänger-Themen 2
K Methoden Schließen eines Fensters Java Basics - Anfänger-Themen 8
H JFrame komplett schließen Java Basics - Anfänger-Themen 3
J Socket schließen - Ist eine SocketException unumgänglich? Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben