예외

5BRack·2022년 7월 1일

자바란?

목록 보기
20/42

예외

예외와 에러의 차이점

  • 예외는 연산오류, 숫자 포맷 오류 등과 같이 개발자가 해결할 수 있는 오류를 말한다. 여기서 해결은 차선책을 선택하는 것을 말한다.
  • 에러는 자바 가상 머신(JVM)에서 발생하는 오류로 개발자가 해결할 수 없는 오류를 말한다.

예외와 에러의 최상위 클래스

  • 자바에서 예외의 최상위 클래스는 'Exception' 클래스이다.
  • 에러의 최상위 클래스는 Error 이다.
  • 둘다 Throwable 클래스를 상속하고 있다.

예외 클래스의 상속 구조

  • Throwable 클래스를 상속받은 Exception 클래스는 다시 일반 예외 클래스와 실행 예외 클래스로 나뉜다.
  • Exception 클래스에게 직접 상속받은 예외 클래스들이 처리하는 일반 예외는 컴파일 전에 예외 발생 문법을 검사하며, 예외 처리를 하지 않으면 문법 오류가 발생한다.
  • RuntimeException 클래스를 상속받은 예외 클래스들이 처리하는 실행 예외는 컴파일 전이 아니라 실행할 때 발생하는 예외로, 예외 처리를 따로 하지 않더라도 문법 오류가 발생하지 않는다.

일반 예외 클래스

일반 예외

  • 문법 오류 발생

InterruptedException

  • thread.sleep(시간)메서드는 일정상태동안 쓰레드를 일시정지상태로 만드는 Thread 클래스의 정적 메서드다. 이메서드는 일반 예외가 발생할 수 있기 때문에 반드시 예외처리를 해야 한다.

ClassNotFoundException

  • Class.forName(패키지명.클래스명)은 클래스를 동적으로 메모리에 로딩하는 메서드로, 해당 클래스의 정보를 담고 있는 Class 타입의 객체를 리턴한다. 만일 클래스를 메모리에 동적으로 로딩하는 과정에서 해당 클래스가 존재하지 않을 때 발생하므로 예외처리를 반드시 포함해야 한다.

IOException

  • 자바 입출력 부분에서 자주보게 될 일반 예외로 쓰거나 읽을 때 발생하며 반드시 IOException에 대한 예외처리를 해야 한다.

FileNotFoundException

  • 파일을 읽을 때 해당 경로에 파일이 없을 때 발생 실제 파일의 유무와 상관없이 발생하므로 예외처리가 꼭 필요

CloneNotSupportException

  • Object 클래스의 clone()함수를 사용할 시, 복사의 대상이 Clonable 인터페이스를 상속하지 않을 때 발생

실행예외

  • 프로그램이 강제종료

ArithmeticException

  • 연산자체가 불가능할때 발생하는 실행 예외
  • 수학에서 존재할수없는 대표적인 연산은 분모가 0일때

ClassCastException

  • 상속관계에 있는 클래스간의 업캐스팅은 항상 가능하지만, 다운 캐스팅 가능할 수도, 불가능할 수도 있다고 했다.
  • 다운캐스팅이 불가능한 상황에서 다운 캐스팅을 시도할때 발생

ArrayIndexOutOfBoundsException

  • 배열의 인덱스값을 잘못 사용하였을시 발생

NumberFormatException

  • 문자열을 숫자로변환시 숫자형식이 아닐때 발생

NullPointerException

  • 참조변수가 실제 객체를 가리키고 있지 않은 상황에서 필드나 메서드를 호출할때 발생

0개의 댓글