2016년 2월 11일 목요일

JAVA Exception

1) 예외

예외 : 잘못된 코드, 부정확한 데이터, 예외적인 상황에 의하여 발생하는 오류이다. 예외가 발생되면 프로그램은 곧바로 종료된다는 점에서 에러와 동일하다.

그러나 예외는 예외처리를 통해 프로그램을 종료하지 않고 정상 실행 상태가 유지되도록 할 수 있다.

예외는 두 가지 종류가 있다. 하나는 일반예외이고 다른 하나는 실행예외이다. 일반 예외는 컴파일러 체크 예외라고도 하는데, 자바 소스를 컴파일하는

과정에서 예외처리코드가 필요한지 검사하기 대문이다. 만약 예외처리 코드가 없다면 컴파일 오류가 발생한다.

실행 예외는 컴파일하는 과정에서 예외 처리 코드를 검사하지 않는 예외를 말한다. 자바에서는 예외를 클래스로 관리한다.

JVM은 프로그램을 실행하는 도중에 예외가 발생하면 해당 예외 클래스로 객체를 생성한다.

그리고 나서 예외처리 코드에서 예외 객체를 이용할 수 있도록 해준다. 일반예외는 Exception을 상속받지만 RuntimeException을 상속받지 않는 클래스들이고,

실행 예외는 RuntimeException을 상속받은 클래스들이다.


2) 예외(Exception) 클래스

RuntimeException클래스들은 주로 프로그래머의 실수에 의해서 발생될 수 있는 예외들로서 자바의 프로그래밍 요소들과 관계가 깊다. 예를 들면, 배열의 범위를 벗어난다던가(IndexOutOfBoundsException), 값이 null인 참조변수의 멤버를 호출하려 했다던가(NullPointerException), 클래스간의 형변환을 잘못했다던가(ClassCastException), 정수를 0으로 나누려 했다던가(Arithmetic- Exception)하는 경우에 발생하는 예외들이다.

RuntimeException클래스들 중의 하나인 ArithmeticException을 try-catch문으로 처리하는 경우도 있지만, 사실 try-catch문을 사용하기보다는 0으로 나누지 않도록 프로그램을 변경하는 것이 올바른 처리방법이다.
이처럼 RuntimeException예외들이 발생할 가능성이 있는 코드들은 try-catch문을 사용하기 보다는 프로그래머들이 보다 주의 깊게 작성하여 예외가 발생하지 않도록 해야 할 것이다. 

그 외의 Exception클래스들은 주로 외부의 영향으로 발생할 수 있는 것들로서, 프로그램의 사용자들의 동작에 의해서 발생하는 경우가 많다. 예를 들면, 존재하지 않는 파일을 처리하려한다던지(FileNotFoundException), 실수로 클래스의 이름을 잘못 적었다던가(ClassNotFoundException), 입력한 데이터의 형식이 잘못되었다던가(DataFormatException) 하는 경우에 발생하는 예외들이다.

이런 종류의 예외들은 반드시 처리를 해주어야 한다. 

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

RuntimeException클래스들 그룹에 속하는 예외가 발생할 가능성이 있는 코드에는 예외처리를 해주지 않아도 컴파일 시에 문제가 되지 않지만, 그 외의 Exception클래스들 그룹에 속하는 예외가 발생할 가능성이 있는 예외는 반드시 처리를 해주어야 하며, 그렇지 않으면 컴파일시에 에러가 발생한다. 

*reference

  • http://itmessi.tistory.com/6
  • http://finewoo.tistory.com/22
  • http://hyeonstorage.tistory.com/199
Share:

0 개의 댓글:

댓글 쓰기