📌 학습 목차
1. 프로그램 오류
2. 예외 클래스의 계층 구조
3. Exception 클래스와 RuntimeException 클래스
1. 프로그램 오류
컴파일 에러(compile-time error): 컴파일할 때 발생하는 에러
런타임 에러(runtime error): 실행할 때 발생하는 에러 / 예외와 에러로 구분됨
논리적 에러(logical error): 실행은 되지만, 의도와 다르게 동작하는 것
예외(exception): 프로그램 코드에 의해 수습될 수 있는 미약한 오류
에러(error): 프로그램 코드에 의해 수습될 수 없는 심각한 오류
•프로그램이 실행 중 오작동하거나 비정상적으로 종료될 때, 이를 초래하는 원인을 프로그램 오류라고 함
이때 프로그램 오류는 발생 시점에 따라 컴파일 에러와 런타임 에러로 구분되며, 이외 논리적 에러가 있음
•소스 코드(*.java)를 컴파일하면 컴파일러가 오타, 잘못된 구문, 자료형 체크 등의 기본적인 검사를 실행해 오류 여부를 확인함
컴파일러가 확인한 오류를 수정해 컴파일을 성공적으로 마칠 경우, 클래스 파일(*.class)이 생성되어 해당 파일을 실행할 수 있게 됨
•컴파일을 성공적으로 마쳤다 할지라도, 실행 도중에 발생할 수 있는 잠재적인 오류까지 컴파일러가 모두 검사할 수는 없음
이에 자바에서는 실행 시(runtime) 발생할 수 있는 런타임 에러를 예외(exception)와 에러(error)로 구분해 클래스로 정의했으며,
미약한 오류인 예외는 프로그래머가 미리 처리해 프로그램의 비정상적인 종료를 막고 정상적인 실행 상태를 유지하고자 함
2. 예외 클래스의 계층 구조
Throwable 클래스: 모든 오류의 조상 클래스 /
The Throwable class is the superclass of all errors and exceptions in the Java language.
🔗 https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Throwable.html
•Exception 클래스와 Error 클래스는
모든 클래스의 최고 조상인 Object 클래스와 모든 오류의 조상인 Throwable 클래스의 자손 클래스에 해당함
3. Exception 클래스와 RuntimeException 클래스
Exception 클래스들(Exception 클래스와 그 자손 클래스들): 프로그램 사용자의 실수와 같은 외적인 요인으로 발생하는 예외
예시) IOException(입출력 에러가 발생하는 경우), ClassNotFoundException(클래스 이름을 잘못 적은 경우) 등
RuntimeException 클래스들(RuntimeException 클래스와 그 자손 클래스들): 프로그래머의 실수로 발생하는 예외
예시) ArithmeticException(정수를 0으로 나누는 경우), ClassCastException(클래스 간에 형변환을 잘못하는 경우) 등
•Exception 클래스와 RuntimeException 클래스를 중심으로 상속 계층도를 도식화하면
'Exception 클래스와 그 자손 클래스들'과 'RuntimeException 클래스와 그 자손 클래스들'로 구분됨
Reference
[남궁성의 정석코딩] Java의 정석 기초편 강의
[도우출판] Java의 정석 기초편 / 기본편
'Development > Java II' 카테고리의 다른 글
[Java] 8-7~8. printStackTrace()와 getMessage() / 멀티 catch 블럭 (0) | 2023.11.16 |
---|---|
[Java] 8-4~6. 예외 처리 / try-catch문의 흐름 / 예외 발생과 catch 블럭 (2) | 2023.11.16 |
[Java] 7-51~52. 익명 클래스 (0) | 2023.11.13 |
[Java] 7-48~50. 내부 클래스의 제어자와 접근성2 (0) | 2023.11.13 |
[Java] 7-45~47. 내부 클래스의 제어자와 접근성1 (0) | 2023.11.12 |