인프런 커뮤니티 질문&답변

작성자 없음

작성자 정보가 삭제된 글입니다.

더 자바, Java 8

Optional API

orElseThrow()

22.08.24 12:00 작성

·

892

1

optional이 널체크를 안해서 발생하는 nullPointException을 피하기 위함이라고 생각햇는데,

orElseThrow()로 예외를 발생시키면 굳이 Optional을 쓸 필요가 없는게 아닌지 헷갈리네요..

orElseThrow를 쓰는 이유가 있을까요?

답변 2

1

백기선님의 프로필 이미지
백기선
지식공유자

2022. 09. 14. 12:46

저는 NPE를 피하려고 Optional이 만들어진게 아니라, 비어있는 값을 리턴할 수도 있다는 것을 명시적으로 표현할 방법을 만들어 준거라 생각합니다. 위에 분 답변에도 공감합니다. 감사합니다.

0

으뀨뜌님의 프로필 이미지

2022. 09. 09. 15:10

지나가다가 답변이 없길래 제 의견을 남겨보자면

 

if ( member.getId() != null ) { return member id; }

else { throw new MemberNotFoundException; }

 

보다는

member.getId().orElseThrow(() -> new MemberNotFoundException); 이 여러모로 낫지 않을까요

Optional의 기능 자체가 모두 하드코딩으로 해결 가능한 부분이긴 하지만 가독성도 좋지 않고 코드도 길어지니까요

 

"꼭 필요한가?"라는 논리에 따르면 Optional은 orElseThrow뿐 아니라 다른 모든 메서드도 꼭 필요한 건 아니라고 봅니다. 다만 더 간결하고 편하죠, 그리고 좀 더 고수같구요

ㅋㅋ

작성자 없음

작성자 정보가 삭제된 글입니다.

질문하기