Try. Finally. If. Not. Null.
Lots of pre-Java 7 code reviews reveal a "try/finally" mistake. Here's a look at dealing with non-AutoCloseable resoruces, and how to open and close correctly.
Join the DZone community and get the full member experience.Join For Free
AutoCloseableresources. Let's open and close them correctly, please.
This is how it looks (assuming we are in Java 6):
I already wrote about
null and its evil nature. Here it comes again. If you just follow the ruleof "not using NULL anywhere ever," this code would need an immediate refactoring. Its correct version will look like this:
There is no
null anymore and it's very clean. Isn't it?
There are situations when opening the resource itself throws
IOExceptionand we can't put it outside of
try/catch. In that case, we have to have two
But there should be no
The presence of
null in Java code is a clear indicator of code smell. Something is not right if you have to use
null. The only place where the presence of
null is justified is where we're using third-party APIs or JDK. They may return
null sometimes because... well, their design is bad. We have no other option but to do
if(x==null). But that's it. No other places are good for
Published at DZone with permission of Yegor Bugayenko. See the original article here.
Opinions expressed by DZone contributors are their own.