728x90

프로그램 오류

컴파일 에러 : 컴파일 시에 발생하는 에러
런타임 에러 : 실행 시에 발생하는 에러
논리적 에러 : 실행은 되지만, 의도와 다르게 동작하는 것

런타임 에러를 방지하기 위해서는 프로그램의 실행 도중 발생할 수 있는 모든 경우의 수를 고려하여 이에 대한 대비를 하는 것이 필요하다. 자바에서는 실행 시(runtime) 발생할 수 있는 프로그램 오류를 ‘에러(error)’와 ‘예외(exception)’, 두 가지로 구분하였다.

에러(error)         : 프로그램 코드에 의해서 수습될 수 없는 심각한 오류
예외(exception) : 프로그램 코드에 의해서 수습될 수 있는 다소 미약한 오류

에러는 메모리 부족(OutOfMemoryError)이나 스택오버플로우(StackOverflowError)와 같이 일단 발생하면 복구할 수 없는 심각한 오류이고, 예외는 발생하더라도 수습될 수 있는 비교적 덜 심각한 것이다.

 

예외 클래스의 계층 구조

Exception과 Error클래스 역시 Object클래스의 자손들이다.

모든 예외의 최고 조상은 Exception클래스이며, 상속계층도를 Exception클래스부터 도식화하면 다음과 같다.

위 그림에서 볼 수 있듯이 예외 클래스들은 다음과 같이 두 그룹으로 나눠질 수 있다.

Exception과 Runtime Exception

Exception클래스들               : 사용자의 실수와 같은 외적인 요인에 의해 발생하는 예외
RuntimeException클래스들 : 프로그래머의 실수로 발생하는 예외

RuntimeException클래스들은 주로 프로그래머의 실수에 의해서 발생될 수 있는 예외이다.

  1. 배열의 범위를 벗어난다.(ArrayIndexOutOfBoundsException)
  2. 값이 null인 참조변수의 멤버를 호출한다.(NullPointerException)
  3. 클래스 간의 형변환을 잘못했다.(ClassCastException)
  4. 정수를 0으로 나누려고 했다.(ArithemeticException)
  5. ....

Exception클래스들은 주로 외부의 영향으로 발생할 수 있는 것들로서, 프로그램의 사용자들의 동작에 의해서 발생하는 경우가 많다.

  1. 존재하지 않는 파일의 이름을 입력했다.(FileNotFoundException)
  2. 실수로 클래스의 이름을 잘못 적었다.(ClassNotFoundException)
  3. 입력한 데이터 형식이 잘못되었다.(DataFormatException)

 

반응형
코드플리