개발_웹/Java

Java | 예외(Exception)의 종류

zuyo 2019. 5. 9. 03:31
반응형

1. Java의 특징

Java에서는 JVM을 통해 프로그램 실행 중(런타임)에 예외상황(Exception)이 발생할 경우 프로그램의 정상적인 실행과정과 분리하여 처리할 수 있다.


2. 오류(Error)

java.lang.Error 클래스의 서브클래스들로 시스템에 뭔가 비정상적인 상황이 발생했을 경우에 사용된다.

이런 에러에 대한 예외처리는 신경쓰지 않아도 된다. OutofMemoryError나 ThreadDeath 같은 에러는 catch 블럭으로 잡아도 대응 방법이 없다.

 

예)
- 메모리 부족
- 정의 되지 않은 클래스 등


3. 런타임 예외 (Runtime Exception / Unchecked exception)

RuntimeException을 상속한 클래스들로 주로 프로그래머의 실수에 의해 발생한다. 

명시적인 예외처리를 강제하지 않기 때문에 언체크 예외라고 불리며, 예외 처리가 아니라 프로그래머가 코드를 주의 깊게 작성하여 피해야 한다.

 

예)
- 배열의 범위를 벗어남(IndexOutOfBoundsException)
- 값이 null인 참조변수의 멤버를 호출하려 함(NullPointerException)
- 클래스간의 형변환을 잘못함(ClassCastException)
- 정수를 0으로 나누려 함(Arithmetic- Exception) 등


4. 논-런타임 예외 (Non-Runtime Exception, Checked Exception)

Exception 클래스의 서브클래스이면서 RuntimeException 클래스를 상속하지 않은 것들로, 주로 사용자들의 동작에 의해 발생한다.

반드시 예외처리(try-catch, throws)를 해주어야 하며, 그렇지 않으면 컴파일러가 에러를 발생 시킨다.

 

예)
- 존재하지 않는 파일을 처리하려함(FileNotFoundException)
- 실수로 클래스의 이름을 잘못 적음(ClassNotFoundException),
- 입력한 데이터의 형식이 잘못됨(DataFormatException) 등

반응형