try-with-resources가try-finally보다 우선

2691 단어
참고 자료:,,https://www.cnblogs.com/flyingeagle/articles/10152925.html

기초 회고


1. finally 자구


코드가 이상을 던졌을 때, 방법에 남아 있는 코드의 처리를 중지합니다. 만약 이 방법이 일부 로컬 자원을 얻었다면, 반드시 이 자원을 회수해야 합니다.
이럴 때finally 자구가 필요할 것 같습니다.다음 세 가지 경우 finally 자구를 실행합니다.
1. 코드가 이상을 던지지 않았습니다. 프로그램은try문장의 모든 코드를 우선적으로 실행한 다음finally 자구의 코드를 실행합니다.
2.catch에서 이상이 포착되면 먼저try문장의 코드를 실행하고 이상이 발생할 때까지try문장에 남은 코드를 건너뛰고 대응하는catch에서 마지막으로finally문장의 코드를 실행한다.
3. 코드가 이상을 던지지만catch에서 포획하지 않는 경우 우선try문장의 코드를 실행하고 이상이 발생할 때까지try문장에 남은 코드를 건너뛰고finally자구의 문장을 실행한다.
주:try 문장은finally만catch가 없을 수도 있고,catch만finally가 없을 수도 있습니다.
 

try-with-resources


일반try-catch-finally 구문은 다음과 같습니다.
        try{
            //    
        }catch (Exception ex){
            //  
        }finally {
            //       
        }

try-with-resources 구문:
try (Connection connection = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/how2java?characterEncoding=UTF-8", "root", "admin");
             Statement statement = connection.createStatement();) {//     
            //          
            //     
        } catch (SQLException e) {
            e.printStackTrace();//try-with-resources     catch finally  ,    
        }

일반적인try-catch-finally 문장과 비교하면 주요한 차이점은 다음과 같다.
1.try 뒤에 작은 괄호를 붙여서 작은 괄호 안에 자원의 초기화를 완성하고 같은 작은 괄호 안에 여러 자원을 설명할 수 있습니다.
2.try 블록이 종료될 때close 방법을 자동으로 호출하여finally에서 자원을 닫지 않아도 됩니다.
 
왜 try-with-resources를 우선적으로 사용합니까?주요 원인은 다음과 같습니다.
만약 한 층일 뿐이라면try-catch-finally는 그리 복잡하게 보이지 않을 것이다.그러나try안이나finally안에 다른try-catch-finally를 더 많이 끼워 넣은 다음에 자원을 현저하게 닫아야 하기 때문에 코드가 매우 불필요해 보일 수 있다.
주의해야 할 것은 AutoCloseable 인터페이스를 실현하는 것은try-with-resources 문장을 사용하는 전제 조건이다

좋은 웹페이지 즐겨찾기