본문 바로가기

Development/Java II

[Java] 8-1~3. 프로그램 오류 / 예외 클래스의 계층 구조

📌 학습 목차

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의 정석 기초편 / 기본편