공부한것들을 정리하는 블로그 입니다.
에러 핸들링 비교 (Return OR throw Exception) 본문
* 해당 글은 계속 수정 예정입니다.
최초 작성일 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
'경력 실무경험 > 생각해볼만한 주제' 카테고리의 다른 글
트위터 시스템 디자인 생각해보기 (1) | 2023.05.10 |
---|---|
결제 도메인의 네트워크 예외처리(망취소) (0) | 2023.04.30 |
대용량 트래픽 처리 방법 짧게 정리 (0) | 2023.04.28 |
자바 예외처리, 에러 핸들링에 대해 짧게 정리 (0) | 2023.04.28 |
외부 API 사용에 대해 짧게 정리 (장애발생 고려) (0) | 2023.04.26 |
접근제한자 protected는 언제, 어떻게 사용해야 할까 (0) | 2023.04.25 |
자바를 쓰면 왜 좋을까요? (0) | 2023.04.25 |
동시성, 병렬, 비동기, 논블럭킹과 컨셉들 (0) | 2023.02.01 |