관리 메뉴

공부한것들을 정리하는 블로그 입니다.

에러 핸들링 비교 (Return OR throw Exception) 본문

경력 실무경험/생각해볼만한 주제

에러 핸들링 비교 (Return OR throw Exception)

호 두 2023. 4. 26. 13:54
반응형

* 해당 글은 계속 수정 예정입니다.
최초 작성일 2023.04
마지막 수정일 2023.04

 

 

 

 

 

# 에러 핸들링 비교

리턴코드(Return Code) VS 익셉션(Exception : try-catch, throws)


# 익셉션 (Exception : try-catch, throws)
장점
- 자바에서는 익셉션 사용을 권장하고 있다.
- try-catch 문의 사용으로 정상과 에러처리 코드 분리 가능하여 코드가 간결해진다.
- 런타임 예외의 보편화를 통해 개발자가 작성해야(신경써야) 할 부분을 줄일 수 있다.
- try-catch 블록을 메서드로 추출하면, 각 메서드는 정상/에러 처리에 집중 가능하다. (함수에 한가지 역할만 부여)

단점
- 스택트레이스가 길어진다.
- 컨텍스트(상태)를 가지지 않기에, 성공과 실패로만 구분이되어 세부적인 처리가 어렵다.
- 함수형에서 익셉션은 사이드 이펙트이고, 이는 순수함수를 깨는 것이다.


# 리턴코드 (Return Code)
장점
- 하위 컨텍스트가 상태를 가지므로 오류를 명시적으로 처리 가능하다.
- 도메인을 중심으로 설계하기 편리하게 작용 할 수 있다.
  ex) 오류코드의 앞자리만 구분하여도 정합성/내부/DB/외부API 오류 등을 식별가능
- 익셉션이 발생하지 않으므로 함수형으로 볼 때 순수함수를 유지 할 수 있다.

단점
- 리턴코드를 따로 설계 및 관리해주어야 한다.
- 상위 컨텍스트에서 리턴코드에 대한 분기문과 관련로직이 늘어나게 되고 정상과 에러처리 로직이 섞여 코드의 간결성을 해칠 수 있다.
- 개발자가 작성해야(신경써야) 할 부분이 늘어날 수 있다.
- 프레임워크에서 제공하는 일부 기능을 활용하지 못할 수 있으며, 마찬가지로 프레임워크에 오류를 위임하지 못할 수 있다.
  ex) 스프링AOP가 제공하는 @Transaction

 

 

반응형
Comments