Error와 Exception
먼저 Error와 Exception의 차이에 대해 알아보자
Error(오류)는 시스템이 종료되어야 할 수준의 상황과 같이 수습할 수 없는 심각한 문제를 의미한다. 개발자가 미리 예측하여 방지할 수 없다.
Exception(예외)는 개발자가 구현한 로직에서 발생한 실수나 사용자의 영향에 의해 발생한다. 오류와 달리 개발자가 미리 예측하여 방지할 수 있기에 상황에 맞는 예외처리(Exception Handle)를 해야한다.
Error의 예시
- StackOverflowError : 호출의 깊이가 깊어지거나 재귀가 지속되어 stack overflow 발생 시 던져지는 오류
- OutOfMemoryError : JVM이 할당된 메모리의 부족으로 더 이상 객체를 할당할 수 없을 때 던져지는 오류 (Garbage Collector에 의해 추가적인 메모리가 확보되지 못하는 상황이기도 하다)
개발자가 미리 오류를 대처하기는 힘들다 하지만 예외는 처리할 수 있다.
Exception의 예시
- NullPointerException : 객체가 필요한 경우인데 응용프로그램이 null을 사용하려고 시도할 경우 던져지는/던질 수 있는 예외
- IllegalArgumentException : 메서드가 허가되지 않거나 부적절한 argument를 받았을 경우에 던져지는/던질 수 있는 예외
Exception은 Checked Exception, Unchecked Exception로 나누어진다.
Checked Exception
- Complie Exception이라고도 하며 Exception을 바로 상속받는다.
- 컴파일 시점에 예외를 catch 하는지 정적으로 확인한다. 컴파일 시점에 예외에 대해 처리(try/catch) 하지 않는다면 컴파일 에러가 발생한다.
- 트랜잭션 Rollback이 안된다. (지금 이글을 쓰고있는 이유)
Unchecked Exception
- Unchecked Exception은 RuntimeException을 상속받는다.
- 컴파일 시점에 예외를 catch 하는지 확인하지 않는다. 따라서 컴파일 시점에 예외가 발생하는지 판단할 수 없다.
- 트랜잭션 Rollback이 된다. (지금 이글을 쓰고있는 이유)
Reference
'Java , Spring > Java' 카테고리의 다른 글
[Java] CS 스터디 - 2주차 (Java & Spring) (0) | 2024.08.11 |
---|---|
[Java] CS 스터디 - 1주차 (Java & Spring) (0) | 2024.08.02 |
[Java] 커넥션풀과 데이터소스(DataSource) (0) | 2024.01.19 |
[Java] 서블릿과 스프링에서의 MVC (0) | 2024.01.18 |
[Java] call by value, call by reference (0) | 2024.01.18 |
댓글