2016-06-02 8 views
6

에서 시도 캐치 라운드 브래킷/괄호() 의미 : 다음과 같이 내 지식으로 우리가 <code>try catch</code>를 사용에 따라 자바

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 문서도 참조하십시오.

+0

[Java 7 try-with-resources를 올바르게 사용하고 있습니까?] (http://stackoverflow.com/questions/17650970/am-i-using-the-java-7-try-with) -resources-correctly) –

+0

당신은 그것이 무엇인지 묻습니다, 나는 그것이 무엇인지뿐만 아니라 그것을 올바르게 사용하는 방법에 관한 질문에 연결되어 있습니다. –

답변

13

Java 1.7에서 새로 추가 된 리소스 구문을 사용해보십시오. 닫을 수있는 모든 자원을 선언하는 데 사용됩니다. 다음은 공식 문서 링크입니다. 이 예에서

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

https://docs.oracle.com/javase/tutorial/essential/exceptions/tryResourceClose.html

의 시도 -과 - 자원 문에서 선언 된 자원은의 BufferedReader이다. 선언문은 try 키워드 바로 뒤에 괄호 안에 표시됩니다. Java SE 7 이후의 클래스 BufferedReader는 java.lang.AutoCloseable 인터페이스를 구현합니다. BufferedReader 인스턴스는 try-with-resource 문으로 선언 되었기 때문에 try 문이 정상적으로 완료되는지 또는 갑자기 종료되는지에 관계없이 (IOException를 throw하는 BufferedReader.readLine 메서드의 결과로서) 닫혀집니다.

+1

당신이 참조한 문서를 읽은 후에 나의 이해에 따라, 이제는 리소스를 닫기 위해 예외 처리를 시도 할 필요가있는 부분을 생략하려고합니다. 니스, 문제를 처리하기 위해 finaly 내부에 또 다른 try catch를 작성하면 좋지 않은 느낌이 들었습니다. –