본문 바로가기
프로그래밍/Java

Java - 예외처리 (2)

by 왕거 2020. 7. 17.

최근 많이 게을러졌다. 정신 차리자.

 

 

예외 클래스의 구분

  • Error Class 상속
    • 시스템 오류 수준의 상황으로 프로그램 코드상에서 처리할 수 있는 수준의 문제가 아님
    • VirtualMachineError, IOError
  • Exception Class 상속
    • 코드 오류가 아닌 실행과정에서 발생하는 예외적인 상황을 표현하기 위한 클래스들
    • 실질적인 예외처리 코드를 반드시 명시하거나, throws 키워드를 사용해서 해당 예외를 넘길것을 알려야 함
      • public void testCase1() throws IOException  -  throws 키워드 사용 예
      • throws 사용시 해당 메소드를 호출한 지점으로 계속해서 넘어감
      • 여러가지 예외상황을 throws 할 것을 한꺼번에 표기할 수 있음.
        • public void testCase2() throws excp1, excp2  -  여러 예외상황을 한꺼번에 throws하는 예
    • java.lang.IOException 같은 예외 클래스
  • RuntimeException Class 상속
    • Exception Class를 상속함
    • 코드 오류로 인해서 발생하는 경우가 대부분이므로 코드의 수정을 고려해야 한다.
    • NegativeArraySizeException  -  배열 길이를 음수로 지정할 경우
    • ArrayStoreException  -  배열에 적절하지 않은 인스턴스를 저장할 때
    • 그외로 Arithmetic, ClassCast, NullPointer, ArrayIndexOutOfRange 등등

 

사용자 정의 예외 클래스

  • Exception 클래스를 상속하는 클래스를 만들면 사용자가 직접 예외상황을 정의할 수 있다.
    • 직접, 간접 상속 모두 가능함
  • 정의한 예외처리 루틴으로의 이동은 throw 키워드를 통해서 사용할 수 있다.
    • throw new __DEFINE_EXCEPTION_NAME__;
  • 예외상황을 정의하는 클래스를 만들 때는 가능한 단순한 상속관계로 구성할 것.

 

Finally

  • try-catch문의 구성요소
  • try-catch문을 탈출하기 전에 실행하는 문법
  • 예외가 발생하든 발생하지 않든 무조건 내부의 코드를 무조건 실행한다.
  • 내부에 어떤 코드가 있는지에 따라서 finally문 내부에서도 try-catch문을 사용할 필요가 있음

 

try-with-resources

  • try문에 추가적으로 리소스 관리 기능을 할당하는 것
    • try(BufferedWriter writer = Files.newBufferedWriter(File))  -  파일 관리 예
    • 파일의 open과 close를 자동적으로 수행함
  • finally문 내부에서 발생할 수 있는 예외에 대해서 다시 try-catch문을 사용하는 경우를 막을 수 있다.
  • java.lang.AutoCloseable 인터페이스가 구현된 인스턴스에 한해서 사용할 수 있다.

'프로그래밍 > Java' 카테고리의 다른 글

Java - Java의 기본 클래스 (1)  (0) 2020.07.25
Java - JVM의 메모리 모델과 Object 클래스  (0) 2020.07.23
Java - 예외처리 (1)  (0) 2020.07.12
Java - 인터페이스  (0) 2020.07.08
Java - 상속 (3)  (0) 2020.07.08