자바에서 실행중에 발생할 수 있는 예외 상황 (쉽게 말하면 에러) 을 Exception 이라고 합니다. 특정 예외 상황이 되면, throw 키워드를 통해 상황에 맞는 예외를 발생시킵니다. 예외는 총 3 가지 종류가 있습니다.


Error

에러는, JVM 에서 주로 발생시키는 예외로, 치명적인 상황을 말합니다. 이는, 개발자가 대응할 수 있는 범위가 아니고 시스템 단에서 대응을 할 수 밖에 없습니다.


ex)

StackOverflowError : application 이 너무 깊어져서 stack 이 꽉 찬 경우 발생

ExceptionInitializerError : static 초기화 구문에서 잘못된 static 변수의 초기화시 Exception 이 발생하면 발생


RuntimeException

명시적으로 예외처리를 하지 않아도 되는 Exception 을 말합니다. 따로 예외처리 구문을 작성하지 않아도 컴파일 에러가 나지 않습니다.


ex)

IllegalStateException : 부적합한 경우에 메소드가 호출되면 발생

ArrayIndexOutOfBoundsException : 배열에 부적합한 위치에 접근할 때 발생

IllegalThreadStateException : 쓰레드에 메소드를 호출 요청하여 부적합한 상태를 만들때 발생


Non RuntimeException (RuntimeException 을 제외한 나머지 Exception 들)

이 Exception 들은 예외처리를 반드시 해야 합니다. try ~ catch ~ finally 로 직접 처리하거나, 혹은 throws 로 예외를 현재 메소드에서 회피해야 합니다. 예외처리 구문을 작성하지 않으면 컴파일 에러가 발생합니다.


만약, 한 메소드에 try ~ catch ~ finally 문과 throws 문이 둘 다 있다면, try ~ catch ~ finally 문이 실행됩니다.




(StackOverflowError 클래스 참고)

http://docs.oracle.com/javase/8/docs/api/java/lang/StackOverflowError.html


(IllegalStateException 클래스 참고)

http://docs.oracle.com/javase/8/docs/api/java/lang/IllegalStateException.html


(ExceptionInitializerError 클래스 참고)

http://docs.oracle.com/javase/8/docs/api/java/lang/ExceptionInInitializerError.html


(IllegalThreadStateException 클래스 참고)

http://docs.oracle.com/javase/8/docs/api/java/lang/IllegalThreadStateException.html


(ArrayIndexOutOfBoundsException 클래스 참고)

http://docs.oracle.com/javase/8/docs/api/java/lang/ArrayIndexOutOfBoundsException.html

by kkikkodev 2015. 7. 27. 15:17