Java7,AutoClosable

3954 단어 java7
자바 7 의 try - with - resource 문법 은 자바 개발 자의 효율 을 향상 시 키 는 것 이 목적 입 니 다. 코드 를 작성 할 때 자원 방출 문 제 를 고려 하지 않 아 도 됩 니 다. 대부분의 이러한 '청소' 문 제 는 이상 이 발생 했 을 때 청소 방법 이 호출 되 지 않 았 기 때 문 입 니 다.
준비 하 다.
  • 3 개 이상:
  • class OpenException extends
    Exception{} class SwingException extends
    Exception{} class CloseException extends Exception{}
  • OpenDoor 류
  • 구조 함 수 는 OpenException 을 던 지고 swing () 방법 은 Swing Exception 을 던 지고 close 방법 은 Close Exception 을 던 집 니 다.
    class OpenDoor implements
    AutoCloseable { public OpenDoor() throws
    Exception { System.out.println("The door is open."
    ); //throw new OpenException()
    }; public void swing() throws
    Exception { System.out.println("The door is becoming unhinged."
    ); //throw new SwingException();
    } public void close() throws
    Exception { System.out.println("The door is closed."
    ); // throw new CloseException();
     } }
  • 실행 가능 한 Try With Resources 클래스
  • public class
    TryWithResources { public static void main(String[] args) throws
    Exception { try ( OpenDoor door = new
    OpenDoor() ) { door.swing(); } catch
    (Exception e) {System. out. println ("Is there a draft?" + e. getClass ()); / e. getClass () 주의
    } finally
    { System.out.println("I'm putting a sweater on, regardless. "
    ); } } }

    위의 코드 를 실행 합 니 다. 이상 을 던 지지 않 았 다 면 출력 은 이 랬 을 것 입 니 다.
    The door is open. The door is becoming unhinged. The door is closed. I'm putting a sweater on, regardless.
    세 가지 이상 이 현재 주석 이 떨 어 졌 으 니, 지금 우 리 는 하나씩 그들 을 던 져 보 자.
    시작 하 다
  • 'try - with - resource' 에서 코드 블록 의 이상 을 초기 화 합 니 다 (구조 함수 던 지기)
  • OpenDoor 의 구조 함수 가 이상 을 던 지면 어떻게 됩 니까? close () 방법 이 자동 으로 호출 되 는 지 시험 해 보 겠 습 니 다. 구조 함수 의 이상 코드 에 대한 설명 을 제거 하 겠 습 니 다.
    public OpenDoor() throws
    Exception { System.out.println("The door is open."
    ); throw new
     OpenException(); }

    코드 인쇄 결 과 는 다음 과 같 습 니 다.
    The door is open. Is there a draft? class
    OpenException I'm putting a sweater on, regardless.
    구조 함수 가 이상 을 던 졌 을 때 try - with - resource 코드 체 부분의 코드 가 실행 되 지 않 았 음 을 볼 수 있 습 니 다. 자원 을 설명 할 때 이상 이 있 으 면 자원 이 초기 화 되 지 않 았 다 고 볼 수 있 기 때문에 자원 을 방출 해 야 합 니 다. 그러나 주의해 야 할 때 다른 자원 이 올 바 르 게 초기 화 되 었 다 면 성명 의 반대 순서에 따라 호출 됩 니 다.자원 의 close () 방법.
  • try - with - resource 코드 블록 에서 던 진 이상
  • 스윙 방법 에서 이상 을 던 지면 무슨 일이 일어 날 까요?
    The door is open. The door is becoming unhinged. The door is closed. Is there a draft? class
    SwingException I'm putting a sweater on, regardless.
    위의 출력 에서 우 리 는 알 수 있다.
  • OpenDoor 의 구조 방법 이 호출 되 었 고 첫 번 째 줄 의 출력
  • OpenDoor 의 swing 방법 도 호출 되 었 고 두 번 째 줄 의 출력
  • 던 졌 다 SwingException
  • close 방법 이 호출 되 고 네 번 째 줄 출력
  • 이상 catch 블록 에 캡 처 되 었 습 니 다. 다섯 번 째 줄 출력
  • finally 코드 블록, 6 줄 출력 을 실행 합 니 다.
  • try - with - resources 코드 블록 의 표준 행 위 는 당 혹 스 럽 지만: close 방법 은 언제 실 행 됩 니까? 규칙 은: 모든 AutoCloseable 대상 의 close 방법 은 catch 블록 코드 전에 실 행 됩 니 다.
  • AutoCloseable 대상 의 close 방법 에서 이상 던 지기
  • The door is open.
    The door is becoming unhinged.
    The door is closed.
    Is there a draft? class CloseException
    I'm putting a sweater on, regardless.

    나 는 천 왕 개 지 호의 분할 선 이다.
     
     
    참고:http://www.4byte.cn/learning/84919/java-7-xin-te-xing-zi-dong-zi-yuan-guan-li-arm-he-autoclosable-jie-kou-jiao-cheng.html

    좋은 웹페이지 즐겨찾기