JAVA 예외처리(Exception Handling)

예외처리


예외처리를 if문으로 할경우 if문은 보통 자주 사용되는 구문이기 때문에 예외처리와 일반 코드가 구분이 어려움 이 때문에 사용하는 것이 Exception

  • try~catch
    • try영역에서 나온 예외상황을 catch 부분에서 처리하는 것
    • 실행 과정은
      • 예외발생 -> 참조값 전달하며 catch영역 실행 -> catch영역 실행 후 try~catch 다음문장 실행
    • 예외클래스라는 예외상황을 알리는 클래스들이 있음
    • getMessage()
      • 예외상황을 알리기 위해서 정의된 모든 예외클래스들이 상속하는 메소드 이며 예외상황의 이유를 알림
      • 하지만, 간혹 null만 반환하는 경우가 있으니 의지해선 안됨
    • 이미 약속된 예외상황을 알리는 클래스들이 있음
      • ArrayIndexOutOfBoundsException : 배열의 접근에 잘못된 인덱스 값을 사용
      • ClassCastException : 허용할 수 없는 형변환 연산을 진행
      • NegativeArraySizeException : 배열선언 과정에서 배열의 크기를 음수로 지정
      • NullPointerException : 참조변수가 null로 초기화 된 상황에서 메소드를 호출
    • try 영엑에 둘 이상의 catch 영역 구성 가능
      • 이는 catch문이 쓰여진 순서대로 관찰하기 때문에 상위 클래스인 Throwable을 먼저 사용하면 다음 영역에선 실행이 되지않음
      • 하지만 순서를 바꾸어서 사용한다면 실행은 가능
    • finally
      • try 영역으로 일단 들어가면 무조건 실행되는 영역
  • 예외의 상황 직접 정의
    • Exception 클래스
      • 예외를 정의하기위해 상속을 해주는 클래스
      • Throwable 클래스의 하위 클래스
      • 생성자 호출을 통해서 전달된 문자열을 getMessage의 호출을 통해서 반환
      • 메소드의 뒤에 throws를 통해 정의된 클래스에 보냄 -> 그리고 throw excpt를 통해 예외처리 메커니즘을 가동
      • 이는 try~catch를 사용하지 않아도 사용가능
      • 예외상황이 메소드 내에서 처리되지 않으면, 메소드를 호출한 영역으로 예외 처리가 넘어감을 반드시 명시
      • throw에 의해 생성된 예외상황은 반드시 try~catch로 처리 혹은 throws에 의해서 넘겨져야 한다.
  • 계층도
    • Throwable
      • Error : 단순히 예외가 아닌 심각한 오류상황 표현
      • Exception
    • Exception는 모든 예외 클래스의 상위 클래스(Error 제외)

댓글

댓글 쓰기

이 블로그의 인기 게시물

KV Language(Pycharm에 Highlighting 기능 설정하기)

Python 코딩 공부 시작과 Github 활용

Kivy Tutorial - PingPong