-
카테고리
-
세부 분야
프로그래밍 언어
-
해결 여부
미해결
orElseThrow()
22.08.24 12:00 작성 조회수 112
1
optional이 널체크를 안해서 발생하는 nullPointException을 피하기 위함이라고 생각햇는데,
orElseThrow()로 예외를 발생시키면 굳이 Optional을 쓸 필요가 없는게 아닌지 헷갈리네요..
orElseThrow를 쓰는 이유가 있을까요?
답변을 작성해보세요.
1
백기선
22.09.14 12:46
저는 NPE를 피하려고 Optional이 만들어진게 아니라, 비어있는 값을 리턴할 수도 있다는 것을 명시적으로 표현할 방법을 만들어 준거라 생각합니다. 위에 분 답변에도 공감합니다. 감사합니다.
0

으뀨뜌
22.09.09 15:10
지나가다가 답변이 없길래 제 의견을 남겨보자면
if ( member.getId() != null ) { return member id; }
else { throw new MemberNotFoundException; }
보다는
member.getId().orElseThrow(() -> new MemberNotFoundException); 이 여러모로 낫지 않을까요
Optional의 기능 자체가 모두 하드코딩으로 해결 가능한 부분이긴 하지만 가독성도 좋지 않고 코드도 길어지니까요
"꼭 필요한가?"라는 논리에 따르면 Optional은 orElseThrow뿐 아니라 다른 모든 메서드도 꼭 필요한 건 아니라고 봅니다. 다만 더 간결하고 편하죠, 그리고 좀 더 고수같구요
ㅋㅋ
답변 2