Skip to content

Conversation

@mete0rfish
Copy link
Member

@mete0rfish mete0rfish commented Jan 14, 2025

🔥이슈

🔎 작업 내용

문제 상황

JVM은 예외가 발생하면 다음과 같이 작동해요.

  1. 예외 객체 생성 및 메서드 호출 추적
  2. 예외가 발생한 코드에 예외 처리 코드를 탐색. 만약 없으면 상위 메서드로 전파
  3. 상위 메서드의 catch 블록을 찾고, 최상위 메서드에도 없는 경우 DefaultExceptionHandler를 통해 예외 처리

이처럼 StackTrace를 통해 상위 계층으로 전파시키며 정보들을 수집하는 과정을 가진다. 이때 순회 비용이 무시할 수 없을 정도로 크게 작용한다.

해결 방안

단순히 순회를 하는 FillInStackTrace()를 오버라이딩한다. 예외를 전파시키지 않고 바로 자신을 return 시키므로서 비용을 절감할 수 있다.

NPE, OOP처럼 Java의 기본 예외와 달리 Custom Exception은 목적은 예외 추적이 아닌 하위 비즈니스 로직의 수행을 막는 것이다. 따라서 StackTreace를 사용하지 않도록하는 것이 크게 문제되지 않다고 판단했다.

적용 결과, 여러 Exeption이 출력되지 않고, 정확히 CustomException만 출력되는 것을 확인할 수 있다.
image


🔧 관련 링크

Java 예외 생성 비용은 비싸다

@mete0rfish mete0rfish added the ✨리팩토링 리팩토링된 부분이 있어요 label Jan 14, 2025
@mete0rfish mete0rfish merged commit 4fae7d4 into ICT-Dev-Route:main Jan 14, 2025
1 check failed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

✨리팩토링 리팩토링된 부분이 있어요

Projects

None yet

Development

Successfully merging this pull request may close these issues.

refactor: 예외 처리

1 participant