728x90
목차
- 에러(error)
- 예외(Exception)
2-1. Checked Exception
2-2. Unchecked Exception
- 결론
1. 에러(error)
- 프로그램 코드에 의해서 수습될 수 없는 심각한 오류.
- 즉, 내가 자바 애플리케이션이 동작하는 환경에서 문제가 생긴 경우.
- ex) 메모리 부족, 컴퓨터 전기가 나가는 현상 등등..
- 컴파일 에러(Compile error)
- 컴파일할 때 발생하는 에러
- 런타임 에러(Runtime error)
- 실행할 때 발생하는 에러
2. 예외(Exception)
- 프로그램 코드에 의해서 수습될 수 있는 다소 미약한 오류.
- 즉, 내가 짠 코드가 의도한거와 다른 상황에 직면했을 경우.
- ex) 파일을 읽으려 했는데 없다거나, 예상하지 못한 값이 들어와 계산되는 등등..
- Checked Exception
- Unchecked Exception
![](https://blog.kakaocdn.net/dn/cjBNiX/btr4135FLT6/yRIJYUS6skyPYXbeKUedr1/img.png)
2-1. Checked Exception
RuntimeException
을 제외한 나머지 애들.
- 무심코 조치를 하지 않았을 경우를 대비해 컴파일러가 check를 해주는 것이며 반드시 예외처리를 해주어야만 한다.
![](https://blog.kakaocdn.net/dn/cOE5gw/btr41i9QMZJ/SXAAKQX4zB6DQDexiUakz1/img.png)
- ‘data.txt’ 파일에 쓰기 작업을 하려고
FileWriter
클래스를 사용하려고 하면 위와 같이 예외를 처리하지 않았다는 경고를 볼 수 있다.- 즉, 반드시 예외처리를 해줘야 정상적으로 컴파일을 할 수 있다!
![](https://blog.kakaocdn.net/dn/oav1T/btr4PqBcO5e/1UuNIkEojWNjWfJ4DHInxK/img.png)
- 예외처리를 해주니 컴파일이 가능해진 상태가 되며 실행도 정상적으로 되는 것을 볼 수 있다.
2-2. Unchecked Exception
RuntimeException
을 포함한 자식들.
- 예외처리를 안해줘도 컴파일이 가능하다. 그래서 Exception이 발생할때 그때 에러가 발생한다.
![](https://blog.kakaocdn.net/dn/bpq1QE/btr4PrGQ7IT/K9KUAw7VQkJwPNo9tBsbe0/img.png)
- 위 그림에서
System.
out
.println(2 / 0)
에서ArithmeticException
이 발생하는 코드가 있어도 컴파일단계에서 체크를 해주지 못하는 것을 볼 수 있다.
3. 결론
- 에러와 예외를 구분해야 한다.
- 특히, 예외에서는 RuntimeException을 상속하지 않고 꼭 예외처리를 해줘야하는 Checked Exception과 명시적으로 예외처리를 하지 않아도 되는 Unchecked Exception을 구분된다.
참고
- 자바의 정석 8장
반응형
'Java & Kotlin' 카테고리의 다른 글
로깅에 대해 알아보자 (0) | 2023.03.25 |
---|---|
System.out.println 메소드는 실무에서 `절대 사용하지마라.` (0) | 2023.03.21 |
인터페이스 vs 추상클래스 (자바8 이후의 변화) (0) | 2023.03.14 |
상속 vs 컴포지션 - 객체 간의 관계를 나타내는 두 가지 방법 (0) | 2023.03.13 |
__Optional – orElse() vs orElseGet()__ (0) | 2023.03.11 |