Skip to content

fix: 프로퍼티 리소스 로딩 실패가 어느 리소스인지 알 수 없는 RuntimeException 으로 끝나던 문제 수정 - #413

Open
comghost wants to merge 1 commit into
eGovFramework:mainfrom
comghost:fix/property-load-failure-message
Open

fix: 프로퍼티 리소스 로딩 실패가 어느 리소스인지 알 수 없는 RuntimeException 으로 끝나던 문제 수정#413
comghost wants to merge 1 commit into
eGovFramework:mainfrom
comghost:fix/property-load-failure-message

Conversation

@comghost

Copy link
Copy Markdown

수정 사유 Reason for modification

  • 버그수정 Bug fixes
  • 기능개선 Enhancements
  • 기능추가 Adding features
  • 기타 Others

수정된 소스 내용 Modified source

문제

EgovPropertyServiceImplextFileName 으로 지정한 외부 프로퍼티 파일을 읽다가 실패하면
throw new RuntimeException(e) 로 끝냅니다. 예외 메시지는 원인 예외의 문구(예: class path resource [...] cannot be opened because it does not exist)를 그대로 담을 뿐이라, 스킴이 없는 이름이나 인코딩 오류처럼 원인 예외가 리소스를 말해 주지
않는 경우에는 어느 리소스가 실패했는지 알 수 없습니다. 여러 파일을 지정한 설정에서 기동이 실패하면 설정을 하나씩
지워 가며 찾게 됩니다.

수정

실패한 리소스의 설명(Resource.toString())을 메시지에 담은 IllegalStateException 을 던집니다. 원인 예외는 그대로 보존합니다.

} catch (ConfigurationException | IOException e) {
    throw new IllegalStateException("Failed to load property resource: " + resource, e);
}
  • IllegalStateExceptionRuntimeException 의 하위 타입이므로 기존 catch (RuntimeException) 은 그대로 동작합니다.
  • 정상 로딩 경로와 자원 정리(finally)는 손대지 않았습니다.

JUnit 테스트 JUnit tests

  • JUnit 테스트 JUnit tests
  • 수동 테스트 Manual testing

PropertyServiceLoadFailureTest 3건 신규, fdl.property 모듈 전건 통과.

환경 기본 로케일(Locale) 모듈 실행 건수 결과
Windows ko_KR 17 Tests run: 17, Failures: 0, Errors: 0, Skipped: 0
Linux (Ubuntu 22.04 / OpenJDK 17) C.UTF-8 17 Tests run: 17, Failures: 0, Errors: 0, Skipped: 0
구분 건수 내용
결함 회귀 2 없는 classpath: 리소스(문자열 지정)와 없는 file: 리소스(filename/encoding Map 지정) 각각 — IllegalStateException 메시지에 리소스 이름이 담기고 원인 IOException 이 보존된다
기존 동작 1 있는 리소스는 종전처럼 읽혀 값을 돌려준다

수동 확인: 현재 main(cc2b332) 위에서 fdl.property 모듈 빌드·테스트가 통과함을 Windows 와 Linux 에서 확인했습니다.

테스트 브라우저 Test Browser

  • Chrome
  • Firefox
  • Edge
  • Safari
  • Opera
  • Internet Explorer
  • 기타 Others

해당 없음 — 라이브러리 내부 수정입니다.

테스트 스크린샷 또는 캡처 영상 Test screenshots or captured video

해당 없음 — 위 JUnit 테스트 결과로 갈음합니다.


base: eGovFramework:main @ cc2b332 (2026-09-10 fetch 기준, #366~#379 머지 후) · 단일 커밋

EgovPropertyServiceImpl 은 extFileName 으로 지정한 외부 프로퍼티를 읽다가 실패하면
new RuntimeException(e) 만 던진다. 예외 메시지가 원인 예외의 문구뿐이라 여러 파일을
지정한 설정에서는 어느 리소스가 실패했는지 로그만으로 알 수 없고, 기동 실패 원인을
찾으려면 설정을 하나씩 지워 봐야 한다.

- 실패한 리소스 설명(Resource.toString(), 예: class path resource [...])을 메시지에
  담은 IllegalStateException 을 던진다. 원인 예외는 그대로 보존한다
- IllegalStateException 은 RuntimeException 의 하위 타입이라 기존 catch 는 그대로
  동작한다

PropertyServiceLoadFailureTest 3건 추가 — 없는 classpath 리소스와 file 리소스에서
메시지에 리소스가 담기고 원인이 보존되는지, 있는 리소스는 종전처럼 읽히는지.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant