Java - Error, Exception

 Error 는 JVM 실행에 문제가 생겼다는 것을 의미한다. JVM 위에서 실행되는 프로그램은 실행 불능이 된다. 개발자는 안타깝게도 Error 에 대처할 방법이 전혀 없다.


Exception 은 사용자의 잘못된 조작 또는 개발자의 잘못된 코딩으로 인해 발생하는 프로그램 오류이다. Exception 이 발생하면 프로그램이 곧바로 종료된다는 점에서는 Error 와 동일하다. 하지만 Exception 은 Exception Handling 을 통해서 프로그램을 종료하지 않고 정상 실행 상태를 유지되도록 할 수 있다.



Virtual Machine Error 의 종류에는 java.lang.OutOfMemoryError, java.lang.StackOverflowError, java.lang.UnknownError, java.lang.InternalError 등이 있다.


Exception 은 두 가지로 나뉜다. Checked Exception 과 Unchecked Exception 이다.

Checked Exception 은 컴파일러 체크 예외라고도 하는데, 자바 소스를 컴파일하는 과정에서 예외 처리 코드가 필요한지 검사하기 때문이다. Checked Exception 에 예외 처리 코드가 없다면 컴파일 오류가 발생한다. 

Unchecked Exception 의 경우에는 컴파일 과정에서 예외 처리 코드를 검사하지 않는 예외를 말한다. 컴파일 과정에서 예외 처리 코드를 검사하지 않지만, Unchcked Exception 도 마찬가지로 예외 처리가 필요하다.


Checked Exception 은 Exception 을 상속받는다.
Unchecked Exception 은 RuntimeException 을 상속받는다. RuntimeException 은  또한 Exception 을 상속받지만, JVM 은 RuntimeException 을 상속했는지 여부를 보고 Checked Exception 과 Unchecked Exception 을 구별한다.




RuntimeException 은 컴파일러가 체크하지 않기 때문에 개발자의 역량이 중요하다. 또한 잘못된 RuntimeException Handling 은 성능 및 가독성을 해칠 수 있다. 따라서 RuntimeException 의 핸들링 여부와 핸들링 방법에 따라서 서비스의 품질에 많은 영향을 끼친다.

RuntimeException 중 하나인 NullPointerException 에대해서만 다루어도 방대한 양을 다룰 수 있다.
ex) jdk 1.8 부터 지원되는 Optional, method contract 등

다음 글에서는 보다 구체적인 사례를 통해서 보다 올바른 예외 핸들링에 대해서 정리해보겠다.

댓글

이 블로그의 인기 게시물

About JVM Warm up

About idempotent

About Kafka Basic

About ZGC

sneak peek jitpack

Spring Boot Actuator readiness, liveness probes on k8s

About Websocket minimize data size and data transfer cost on cloud

About G1 GC

대학생 코딩 과제 대행 java, python, oracle 네 번째