[Java] Optional / orElseThrow 다시 보기

snowballnote·2026년 9월 21일

PIA 공지 상세조회에서 사용한 코드.

ExternalNotice notice = repository.findById(id)
        .orElseThrow(() -> new ExternalNoticeNotFoundException(id));

findById()는 조회 결과가 없을 수도 있어서 Optional<ExternalNotice>를 반환한다.

즉 바로 ExternalNotice를 받는 게 아니라
값이 있을 수도 있고 없을 수도 있는 상태로 받는다.

Optional

값이 없을 수 있다는 걸 표현할 때 사용.

Optional<ExternalNotice>

조회 결과가 있으면 ExternalNotice가 들어 있고
없으면 빈 Optional이 반환된다.

orElse

값이 없으면 다른 값을 대신 반환한다.

optional.orElse(defaultValue);

기본값으로 대체해도 되는 경우에 사용하면 된다.

orElseThrow

값이 없으면 예외를 발생시킨다.

optional.orElseThrow(...);

Biz Assist에서는 공지 상세조회에 사용했다.

상세 공지가 없는데 임의의 값을 대신 넣을 수는 없어서 orElseThrow()로 처리했다.

공지 있음
→ ExternalNotice 사용

공지 없음
→ ExternalNoticeNotFoundException
→ 404 응답

이번 코드에서 보면 Optional 자체보다
값이 없을 때 어떻게 처리할지를 호출하는 쪽에서 정하는 부분이 핵심이었다.

profile
개발자로 이 험난한 세상 살아가기

0개의 댓글