작성자 없음
작성자 정보가 삭제된 글입니다.
22.08.24 12:00 작성
·
892
1
optional이 널체크를 안해서 발생하는 nullPointException을 피하기 위함이라고 생각햇는데,
orElseThrow()로 예외를 발생시키면 굳이 Optional을 쓸 필요가 없는게 아닌지 헷갈리네요..
orElseThrow를 쓰는 이유가 있을까요?
답변 2
1
2022. 09. 14. 12:46
저는 NPE를 피하려고 Optional이 만들어진게 아니라, 비어있는 값을 리턴할 수도 있다는 것을 명시적으로 표현할 방법을 만들어 준거라 생각합니다. 위에 분 답변에도 공감합니다. 감사합니다.
0
지나가다가 답변이 없길래 제 의견을 남겨보자면
if ( member.getId() != null ) { return member id; }
else { throw new MemberNotFoundException; }
보다는
member.getId().orElseThrow(() -> new MemberNotFoundException); 이 여러모로 낫지 않을까요
Optional의 기능 자체가 모두 하드코딩으로 해결 가능한 부분이긴 하지만 가독성도 좋지 않고 코드도 길어지니까요
"꼭 필요한가?"라는 논리에 따르면 Optional은 orElseThrow뿐 아니라 다른 모든 메서드도 꼭 필요한 건 아니라고 봅니다. 다만 더 간결하고 편하죠, 그리고 좀 더 고수같구요
ㅋㅋ