본문으로 이동
에러 핸들링을 다른 클래스에게 위임하기 (Kotlin 100% 활용)
문서

에러 핸들링을 다른 클래스에게 위임하기 (Kotlin 100% 활용)

한규주 토스 · 토스 기술 블로그

원문 보기

AI 핵심 요약

MSA에서 외부 API 호출 중 발생한 예외를 API 클라이언트가 직접 처리하면, 호출하는 서비스마다 다른 에러 대응을 적용하기 어렵다. 글은 Kotlin의 `runCatching`으로 호출 결과를 `Result<T>`로 감싸 반환하고, 에러 처리를 클라이언트에 위임하는 방식을 제안한다. 호출부는 `getOrNull()`로 실패를 무시하거나 `onFailure`·`onSuccess`로 로깅과 후속 작업을 나누고, 필요하면 `getOrThrow()`로 예외를 다시 던질 수 있다. 이를 통해 외부 서비스 의존 컴포넌트가 실패 가능성을 반환 타입으로 드러내고, 각 호출자가 상황에 맞게 처리하도록 구성할 수 있다.

  • `runCatching`은 블록의 예외를 `Result.success` 또는 `Result.failure`로 감싸 반환한다.
  • `getOrNull`, `getOrDefault`, `getOrElse`, `fold` 등으로 실패를 무시하거나 대체값을 주고, 성공·실패별 동작을 분리할 수 있다.
  • API 클라이언트가 `Result<T>`를 반환하면 호출부가 각 사용 사례에 맞는 에러 처리 방식을 선택할 수 있다.
  • `onFailure`와 `onSuccess`는 처리 후에도 `Result`를 반환하므로, 필요하면 마지막에 `getOrThrow()`로 실패를 다시 예외로 전파할 수 있다.

소개

Kotlin의 Result로 MSA에서 에러가 전파되지 않는 안전한 환경을 만드는 방법을 알아봅니다.

비슷한 학습 자료

문서 김인회/이준영

에러 0%, MSA에서의 Enum 관리 전략

문서 김인회/이준영

토스뱅크 여신의 발전하는 MSA에서 Enum을 안전하게 사용하는 노하우를 알려드립니다.

백엔드

문서 조민규

LLM으로 에러 원인 분석과 해결 방안 제시까지 자동화하고, 팀의 생산성을 향상시킨 이야기를 들려드립니다.

데브옵스 · 인프라 AI에이전트 개발

문서 김동우

토스뱅크에서 대외기관을 통해 신용정보를 가져오는 과정을 개선한 경험을 소개합니다.

백엔드

문서 한규주

토스페이먼츠에서는 API docs를 REST Docs를 사용해서 작성할 수 있도록 권장하고 있습니다. 이 글에서는 DSL을 통해서 반복적인 REST Docs 테스트 코드 작성을 줄일 수 있는 방법을 알아봅니다.

백엔드 소프트웨어 테스트

문서 김자유

UX 라이팅은 한 명이 아닌, 팀원 모두가 잘 쓰는 게 중요해요. 이전까지는 세션이나 가이드라인 등의 방법으로 이 문제를 접근해왔지만, 토스는 조금 다르게 풀어봤어요. 시스템으로요.

UI/UX

문서 박준규

공통 모듈에서 발생한 동시성 이슈의 해결 과정을 소개합니다.

백엔드 프로그래밍 언어