minOS

자바의 정석 ch8-1~3 프로그램 오류 , 예외 클래스의 계층구조 본문

TIL/남궁성의 자바의 정석

자바의 정석 ch8-1~3 프로그램 오류 , 예외 클래스의 계층구조

minOE 2024. 8. 31. 16:48
728x90

ch8-1 프로그램 오류 

- 컴파일 에러(compile-time error) : 컴파일 할 때 발생하는 에러
- 런타임 에러 (runtime error) : 실행 할 때 발생하는 에러
- 논리적 에러 (logical error) : 작성 의도와 다르게 동작


1) 컴파일 오류 예시 


터미널에서 javac로 컴파일 
javac를 이용해서 컴파일하면 에러가 난다. (실행 X)

컴파일러 역할
- 구문 체크
- 번역
- 최적화 (생략된 코드 추가 등)



2) 런타임 에러 예시
해당 코드를 실행하면 
해당 오류 발생한다.
터미널에서 실행하면 
컴파일은 되지만 실행 시점에서 오류가 발생한다. 

3) Java 런타임 에러 종류 (error는 프로그램이 비정상 종료 되지만, 예외 처리는 종료를 막을 수 있다.)
1) 에러 (error) : 프로그램 코드에 의해서 수습될 수 없는 심각한 오류
2) 예외 (exception) : 프로그램 코드에 의해서 수습될 수 있는 다소 미약한 오류

4) 예외처리의 정의와 목적 
1) 정의 : 프로그램 실행 시 발생할 수 있는 예외읭 발생에 대비한 코드를 작성하는 것
2) 목적 : 프로그램의 비정상 종료를 막고, 정상적인 실행상태를 유지하는 것 

 

 

ch8-2 예외 클래스의 계층 구조

                      Throwable
                          |
              +-----------+------------+
              |                        |
          Exception                Error
              |                        |
     +--------+-------+                |
     |                |                |
RuntimeException   IOException      OutOfMemoryError
     |                |                |
+----+----+       FileNotFoundException   etc.
|         |    
NullPointerException    
IllegalArgumentException
     etc.


Throwable : 모든 오류의 조상 클래스
런타임 에러 
- Exception : 미약한 오류
- Error : 심각한 오류 

 

 

ch8-3 Exception과  RuntimeException

1)  RuntimeException 클래스들 (자손 클래스) : 프로그래머의 실수로 발생하는 예외
2) Exception 클래스들(자손 클래스) : 사용자의 실수와 같은 외적인 요인에 의해 발생하는 예외
Exception
│
├── RuntimeException
│   ├── NullPointerException
│   ├── IllegalArgumentException
│   ├── ArrayIndexOutOfBoundsException
│   └── ArithmeticException
│
└── IOException
    ├── FileNotFoundException
    └── EOFException​

구조 설명:
1. Exception: 모든 체크 예외의 최상위 클래스.
      - RuntimeException: 런타임 예외의 최상위 클래스 (비체크 예외).
           - NullPointerException: `null` 객체 참조 시 발생.
           - IllegalArgumentException: 메서드에 부적절한 인자 전달 시 발생.
           - ArrayIndexOutOfBoundsException: 배열 인덱스 범위 초과 시 발생.
           - ArithmeticException: 수학적 오류 발생 시 (예: 0으로 나누기).
     - IOException: 입출력 작업 중 발생하는 예외.
           - FileNotFoundException: 파일을 찾을 수 없을 때 발생.
           - EOFException: 파일 또는 데이터 스트림 끝에 도달 시 발생. 
728x90