Java 7'den itibaren, kaynakları bir nihayet bloğunda açıkça kapatmanız gerekmiyor, bunun yerine try -with-kaynakları sözdizimini kullanabilirsiniz. Kaynakla dene ifadesi, bir veya daha fazla kaynağı bildiren bir dene ifadesidir. Kaynak, programla bittikten sonra kapatılması gereken bir nesnedir. Kaynakları ile dene ifadesi, her kaynağın ifadenin sonunda kapatılmasını sağlar. Java.io.Closeable'ı uygulayan tüm nesneleri içeren java.lang.AutoCloseable'ı uygulayan herhangi bir nesne, kaynak olarak kullanılabilir.
Aşağıdaki kodu varsayalım:
try( Connection con = null;
Statement stmt = con.createStatement();
Result rs= stmt.executeQuery(QUERY);)
{
count = rs.getInt(1);
}
Herhangi bir istisna olursa, bu üç kaynağın her biri için oluşturuldukları sıranın tersi sırayla kapat yöntemi çağrılacaktır. Bu, close yönteminin önce ResultSetm, ardından Statement ve sonunda Connection nesnesi için çağrılacağı anlamına gelir.
Kapatma yöntemleri otomatik olarak çağrıldığında oluşan istisnaların bastırıldığını bilmek de önemlidir. Bu bastırılmış istisnalar , Throwable sınıfında tanımlanan getsuppressed () yöntemi ile alınabilir .
Kaynak: https://docs.oracle.com/javase/tutorial/essential/exceptions/tryResourceClose.html