• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    미해결

orElseThrow()

22.08.24 12:00 작성 조회수 681

1

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

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

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

답변 2

·

답변을 작성해보세요.

1

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

0

으뀨뜌님의 프로필

으뀨뜌

2022.09.09

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

 

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

else { throw new MemberNotFoundException; }

 

보다는

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

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

 

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

ㅋㅋ