Wieso meckert FindBugs da?

Status
Nicht offen für weitere Antworten.

Verjigorm

Top Contributor
Hallo,
ich habe hier folgendes Codestück über das FindBugs meckert
[OBL] Method may fail to clean up stream or resource [OBL_UNSATISFIED_OBLIGATION]
Das ResultSet wird ausgelesen und einige Überprüfungen finden statt, mit verschiedenen return-Werten.
Aber selbst bei returns im catch-Block wird doch der finally-Block immer ausgeführt oder irre ich mich da?
Es gibt sonst keine weiteren try/catchs oder sonstwas, nur if/else

Kann mir jemand sagen, wo das Problem liegt?

Code:
		PreparedStatement stmt = null;
		ResultSet set = null;
		
		try {
			stmt = connection.prepareStatement(sql);
			stmt.setString(1, equipmentNr);
			
			set = stmt.executeQuery();   //<--- MeckerMecker

                        //[...] Einige Überprüfungen mit returns

		} catch (SQLException e) 
		{
//			e.printStackTrace();
			return -1;
		}
		finally
		{
			if(stmt != null)
				try {stmt.close();} catch (SQLException e) {e.printStackTrace();}
				
			if(set != null)
				try {set.close();} catch (SQLException e) {e.printStackTrace();}
		}

mfg Verjigorm
 

foobar

Top Contributor
Solange du kein System.exit() im Try-Block machst, wird der finally-Block ausgeführt. Sieht also korrekt aus.
 

ARadauer

Top Contributor
100%ig kann man sich auf findbugs auch nicht verlassen. mir ist aufgefallen, manchmal meckert er bei sachen die eigentlich föllig legitim sind.

er ist eine gute hilfestellung aber schlussendlich muss ich mir bewusst sein, was mein code hier macht...
 

byte

Top Contributor
Rein theoretisch könnte stmt.close(); eine RuntimeException werfen, die nicht gefangen wird, wodurch set nicht geschlossen werden würde. Wäre aber ziemlich dämlich, das anzukreiden.
 
S

SlaterB

Gast
man sollte doch auch erst das ResultSet schließen und dann das Statement oder?
Ressourcen müssten aber doch wohl in beiden Fällen freigegeben werden
 

Verjigorm

Top Contributor
Ok, nachdem ich alles zeile für Zeile ein- und auskommentiert habe, habe ich den "Bug" entdeckt:

Der "Bug" verschwindet, wenn ich im finally-Block die 2 close()-Statements vertausche.
Also erst ein close() aufs Resultset und dann ein close() aufs Statement (Was ja doch irgendwo die logische Reihenfolge ist)
Wenn ich das Statement zumache, ist das Resultset ja normalerweise auch zu, deswegen wohl die Meldung.

edit: Slater war mal wieder schneller
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
Zrebna Wieso sollte man Null-Prüfungen nicht mit Optional-Objekten nutzen? Allgemeine Java-Themen 13
Zrebna Wieso sind eigentlich JUnit-Tests in src/test/java platziert - nur Konvention? Allgemeine Java-Themen 7
P Wieso benutzen PriorityQueues Heaps? Allgemeine Java-Themen 2
Y Wieso krieg ich die Unit Tests nicht hin Allgemeine Java-Themen 55
I Wieso funktioniert das nich? Allgemeine Java-Themen 5
F Input/Output NullPointerException, aber wieso? [Apache POI] Allgemeine Java-Themen 11
R MAC-Adresse eindeutig für einen PC ? Bezug zu Netzwerk, wieso ? Allgemeine Java-Themen 7
P Best Practice Wieso funktioniert der Modulo - Operator nicht? Allgemeine Java-Themen 2
J Jasper ireport - wieso beendet die Anwendung wenn ich die Preview schließe Allgemeine Java-Themen 1
I Interface Interface / Klasse - wieso Abstract? Allgemeine Java-Themen 13
A Methoden Generische Methode mit Arrays - Source Compatibility 1.7 benötigt, wieso? Allgemeine Java-Themen 3
S RemoteException wieso ? Allgemeine Java-Themen 6
J if else Anweisung macht nicht was es soll. Wieso? Allgemeine Java-Themen 10
P wieso kann ich auf bluej exportieren aber auf eclipse nicht? Allgemeine Java-Themen 2
DEvent Wieso ist Javadoc mit Html Tags? Allgemeine Java-Themen 47
D java.util.InputMismatchException im Scanner -wieso? Allgemeine Java-Themen 5
E Wieso returnt das hier 1? Allgemeine Java-Themen 3
DStrohma [Erledigt] Wieso kann ich Taste 'ENTER' in JTable nicht belegen? Allgemeine Java-Themen 2
C Wieso funktioniert das? Allgemeine Java-Themen 6
W Wieso funktioniert dieser Code hier? Allgemeine Java-Themen 6
S Wieso stehen in der API immer wieder abstrakte Methoden ? Allgemeine Java-Themen 7
lacyuu Schleife hängt sich auf, wieso?? Allgemeine Java-Themen 2
P Wieso HashMap-Zugriff mit Object, statt mit MyObject? Allgemeine Java-Themen 12
V Wieso Heap Space Problem? Allgemeine Java-Themen 14
J Wieso implementiert HTTPServlet Serializable? Allgemeine Java-Themen 2
P Wieso skalieren diese beiden Threads unterschiedlich gut? Allgemeine Java-Themen 16
zilti Wieso geht der StreamReader/Writer nicht? Allgemeine Java-Themen 5
T Wieso erfolgt keine Ausgabe. /Excel Allgemeine Java-Themen 19
G wieso wird der String des StringBuilder immer länger? Allgemeine Java-Themen 2
G wieso "implements" Allgemeine Java-Themen 13
S Problem mit generics -> ClassCastException und ka wieso Allgemeine Java-Themen 20
G Übergabe funzt nicht, aber wieso? Allgemeine Java-Themen 3
G NullPointer ? wieso? Allgemeine Java-Themen 7
I Wieso läuft Programm bei Kollegen aber nicht bei mir? Allgemeine Java-Themen 10
K event dispatch thread fehler. Compiler meckert nicht aber der Interpreter? Warum?? Allgemeine Java-Themen 11
D FindBugs oder CheckStyle aus Java-Programm starten Allgemeine Java-Themen 2
T CheckStyle, JUnit und FindBugs aus Java-Programm starten Allgemeine Java-Themen 2
S findbugs zeigt unter Eclipse 3.2 nichts an Allgemeine Java-Themen 2

Ähnliche Java Themen

Neue Themen


Oben