web-dev-qa-db-ja.com

Javaのtry catchの丸括弧/括弧()とは

私の知る限りでは、try catch 次のように:

try {
   //Some code that may generate exception
}
catch(Exception ex) {
}
   //handle exception
finally {
   //close any open resources etc.
}

しかし、私は次のコードで見つけました

try(
    ByteArrayOutputStream byteArrayStreamResponse  = new ByteArrayOutputStream();                   
    HSLFSlideShow   pptSlideShow = new HSLFSlideShow(
                                      new HSLFSlideShowImpl(
 Thread.currentThread().getContextClassLoader()
       .getResourceAsStream(Constants.PPT_TEMPLATE_FILE_NAME)
                                     ));
 ){
}
catch (Exception ex) {
       //handel exception
}
finally {
      //close any open resource
}

この括弧がなぜか()試した直後。

それの使用法は何ですか? Java 1.7?で新しいですか?どのような構文を記述できますか?

APIドキュメントも参照してください。

28

Java 1.7で新たに追加されたリソースの構文を試してみてください。閉じることができるすべてのリソースを宣言するために使用されます。公式ドキュメントへのリンクです。 https:// docs.Oracle.com/javase/tutorial/essential/exceptions/tryResourceClose.html

static String readFirstLineFromFile(String path) throws IOException {
try (BufferedReader br =
               new BufferedReader(new FileReader(path))) {
    return br.readLine();
}
}

この例では、try-with-resourcesステートメントで宣言されたリソースはBufferedReaderです。宣言ステートメントは、tryキーワードの直後の括弧内に表示されます。 Java SE 7以降のクラスBufferedReaderは、インターフェースJava.lang.AutoCloseableを実装します。BufferedReaderインスタンスはtry-with-resourceステートメントで宣言されているため、 tryステートメントが正常に終了するか、突然終了するか(メソッドBufferedReader.readLineがIOExceptionをスローした結果)。

35
Prasad Kharkar