1. 예외를 처리하는 방법

※ 최근 자바 개발자들끼리 checked exception을 unchecked exception으로 전환시키는 것이 좋다는 결론을 내림

 

1) 예외 복구

// 일반적으로 예외를 던지는 경우
public void exceptionTest() throws SomeException {

}

// 어느정도 처리하고 예외를 던지는 경우
public void exceptionTest() throws SomeException {
    try {
        ...
    } catch (SomeException e) {
// 예외 처리의 필요성이 있을 때 어느정도 처리하고 던지는 경우
	throw e;
    }
}

- 예외 발생 시 다른 작업 흐름으로 유도 ( try ~ catch ~ finally )

- 예외가 발생해도 어플리케이션은 정상적인 흐름으로 진행됨

- 예외 발생 시 재시도를 통해 정상 흐름으로 진행되게 하거나 미리 예측하여 다른 흐름으로 유도시키도록 구현하면 예외가 발생하더라도 정상적으로 작업 종료 가능

 

2) 예외 처리 회피

public void exceptionTest() {
    try {
        ...
    } catch (SQLException e) {
// 더 명확하게 인지할 수 있도록 다른 예외로 전환해서 던지는 방법
	throw new DuplicationUserIdException(message);
    }
}

- 예외 처리를 직접 담당하지 않고 호출한 쪽으로 던져 회피하는 방법

- 무책임하게 상위 메서드로 throw를 던지는 행위는 상위 메서드의 책임이 증가하기 때문에 적절한 경우에만 사용하는 것이 좋음

 

3) 예외 전환

- 예외를 잡아 다른 적절한 예외로 전환하여 자신을 호출한 메서드로 던져버리는 방법

- 호출한 쪽에서 예외를 받아 처리 시 좀 더 명확하게 인지할 수 있도록 돕기 위한 방법

- 어쩔 수 없이 API에서 가져다 쓰는 기능(Thread.sleep() 등)은 checked exception이 강제되는 경우 어떤 로직을 호출하거나 실행하려 하는지 명시되는 문제가 발생

→ try ~ catch를 쓰되 catch 블럭에서 다른 runtimeException을 throw

→  예외를 유발했던 요소가 아닌 catch 블럭에서 일으킨 예외가 대신 콘솔에 찍힘

→  throw 되는 예외를 바꿔서 어떤 로직이 예외를 유발했는지 추론하기 어렵게 만들어 캡슐화 유지

'네트워크캠퍼스 > JAVA' 카테고리의 다른 글

프로세스와 쓰레드  (0) 2024.01.24
자바 API  (0) 2024.01.18
예외처리  (0) 2024.01.17
인터페이스  (0) 2024.01.16
추상화  (0) 2024.01.15

+ Recent posts