New/strange Java "try()" syntax?

Solution 1:

It was added in Java 7. It's called the try-with-resources statement.

/edit

Might as well throw this in here too. You can use the try-with-resources statement to manage Locks if you use a wrapper class like this:

public class CloseableLock implements Closeable {
    private final Lock lock;

    private CloseableLock(Lock l) {
        lock = l;
    }

    public void close() {
        lock.unlock();
    }

    public static CloseableLock lock(Lock l) {
        l.lock();
        return new CloseableLock(l);
    }
}

try(CloseableLock l = CloseableLock.lock(lock)) { // acquire the lock
    // do something
} // release the lock

However, since you have to declare a variable for every resource, the advantage of this is debatable.

Solution 2:

This is Java 7's new try-with-resources statement: http://download.oracle.com/javase/7/docs/technotes/guides/language/try-with-resources.html