알 리 바 바 자바 개발 매 뉴 얼 - finally 블록 은 자원 대상, 흐름 대상 을 닫 아야 합 니 다. 이상 이 있 으 면 try - cach 작업 을 해 야 합 니 다.

JDK 7 이상 버 전에 대해 서 는 try - with - resources 방식 을 사용 할 수 있 습 니 다.
사용 방법:
    /**
     * https://www.cnblogs.com/itZhy/p/7636615.html
     *            ,       tryCacheThrowTest()    
     * https://www.cnblogs.com/langtianya/p/5139465.html
     * Throwable#addSuppressed()  :   finally              ,           ,
     *                  ,        ,      Throwable#addSuppressed()
     *            ,  getSuppressed         
     */
    @Test
    public void tryWithResourceTest(){
        try (FileInputStream inputStream = new FileInputStream(new File("test"))) {
            System.out.println(inputStream.read());
        } catch (IOException e) {
            throw new RuntimeException(e.getMessage(), e);
        }
    }
    @Test
    public void tryCacheThrowTest(){
        try {
            FileInputStream inputStream = new FileInputStream(new File("test"));
            Throwable var2 = null;

            try {
                System.out.println(inputStream.read());
            } catch (Throwable var12) {
                var2 = var12;
                throw var12;
            } finally {
                if (inputStream != null) {
                    if (var2 != null) {
                        try {
                            inputStream.close();
                        } catch (Throwable var11) {
                            var2.addSuppressed(var11);
                        }
                    } else {
                        inputStream.close();
                    }
                }

            }

        } catch (IOException var14) {
            throw new RuntimeException(var14.getMessage(), var14);
        }
    }

좋은 웹페이지 즐겨찾기