자바에서는 예외, 오류를 객체로 취급하고 예외에 대하여 java.lang 패키지에서 예외 관련 클래스를 제공한다.
자바에서는 Error와 Exception이 있고 모두 Throwable 클래스를 상속 받는다.
Error는 하드웨어 관련 예외 처리 클래스이다.
우리가 중점적으로 다루어야 할 클래스는 Exception 클래스이다.
Exception 클래스에는 NoSuchMethod, IO 등이 있지만 RuntimeException이라는 동작 방식이 다른 예외와 다른 클래스가 있다.
RuntimeException은 ArithmeticException (나누기 0), NullPointException (null 발생 시), IndexOutOfBoundException (배열값 초과)와 같은 하위 클래스를 가진다.
그럼 왜 동작 방식이 다른가?
우리가 코딩을 하다보면 위에 RuntimeException 예외들은 오류없이 컴파일을 할 수 있다. 하지만 컴파일을 하다가 예외가 발생하면 그 값들이 출력된다.
이러한 이유로 인해 RuntimeException에 속한 예외 클래스들은 UncheckedException이라고 할 수 있다. 그 외는 예외들은 코드를 실행하기 전부터 오류 문구가 나오면서 실행이 되지 않는다. 이 경우는 CheckedException 이다.
이렇게 예외가 처리되는 이유는 효율과 관련이 있다. RuntimeException 클래스의 모든 예외들을 프로그램에서 try catch로 처리하도록 하는 것은 개발하는 데 있어서 효율이 떨어진다.
그리고 이 예외들은 개발자의 논리적인 오류로 인한 예외이기에 개발자가 로직을 잘 짜도록 하는 것이 좋다.
결론적으로 UncheckedException과 CheckedException을 잘 구분하여 사용한다면 코드를 더 깔끔하게 작성할 수 있다.
이 글은 '알기 쉽게 해설한 JAVA (김종석)' 을 참고하여 작성하였다.
'자바' 카테고리의 다른 글
| 객체지향 키오스크 만들기 (0) | 2025.03.12 |
|---|---|
| enum 클래스란? (0) | 2025.03.11 |
| 다양한 방법으로 사칙연산 계산기 만들기 (0) | 2025.02.27 |
| 자바 최신 문법 활용해보기 (스트림, 옵셔널, 스위치 표현식, 레코드, 인스턴스오프) (0) | 2025.02.20 |
| 자바 생성자 오버로딩(Overloading) // this, this()의 차이 (0) | 2024.05.27 |