본문 바로가기
기타/도서

[자바의 정석] 6. 예외처리

by cejin 2023. 11. 21.

1. 프로그램 오류

1. 에러 : 코드에 의해서 수습될 수 없는 심각한 오류

- 컴파일 에러(컴파일 시)

- 런타임 에러(실행 시)

- 논리적 에러(의도와 다르게 동작)

 

2. 예외 : 코드에 의해서 수습될 수 있는 다소 미약한 오류

 

 

2. 예외 클래스의 계층구조

Object > Throwable > Exception > RuntimeException, IOException, ...

Object > Throwable > Error > OutOfMemoryError, ...

 

Exception > IOException, ClassNotFoundException, ...

Exception > RuntimeException > ArithmeticException, ClassCastException, NullPointerException, ... IndexOutOfBoundException

 

 

3. 종류

Exception 클래스들 : 외적 요인 (사용자의 실수)

RuntimeException 클래스들 : 프로그래머의 실수

 

 

4. catch 문

1. printStackTrace()

: 예외발생 당시의 호출스택(Call Stack)에 있었던 메서드의 정보와 예외 메시지를 화면에 출력

 

2. getMessage()

: 발생한 예외클래스의 인스턴스에 저장된 메시지를 얻을 수 있음

 

 

5. 멀티 catch블록

catch( ExceptionA | ExceptionB e)

- JDK 1.7부터

 

 

6. 예외 발생시키기

: 프로그래머가 고의로 발생시킴

 

1. new를 이용

Exception e = new Exception("고의 발생");

 

2. throw 이용

throw e;

-> 1과 2를 합쳐서 throw new Exception("고의 발생"); 도 가능

 

 

7. finally 블럭

: 예외의 발생여부에 상관없이 실행되어야 할 코드를 포함시킬 목적으로 사용됨

- try, catch, finally 순서

 

 

8. 사용자 정의 예외 만들기

class MyException extends Exception {}

- 생성자에 정의

- 아래서 catch (MyException e)로 잡기

 

 

9. 예외 다시 던지기 (exception re-thorowing)

: 예외를 처리한 후에 인위적으로 다시 발생시키는 방법

- catch문에서 throw e;

- 반환값이 있는 return 문의 경우, catch블록에도 return 문 필요

 

 

10. 연결된 예외(chained exception)

: 한 예외가 다른 예외를 발생시킬 수 있음

- 여러 가지 예외를 하나의 큰 분류의 예외로 묶어서 다루기 위해서

- 원인 예외 : 예외 A 가 예외 B를 발생시킨 경우, A

Throwable initCause(Throwable cause) 지정된 예외를 원인 예외로 등록

Throwable getCause() : 원인 예외를 반환

 

 

 

출처 : 자바의 정석 기초편 1

도서관에서 발견한 책인데 설명이 친절하고 설명이 잘 되어있어서 좋았습니다.

기초편은 1편과 2편으로 나뉩니다.

1편을 읽으면서 다시 참고하고 싶은 내용을 정리했습니다.