Optional orElseGet / orElseThrow

Crow·2022년 10월 20일
0

삽질

목록 보기
5/16

orElseGet으로 오류처리중 아무리 해도 안됨
그래서 다시 찾아보니 orElseGet은 null일시에 해당 메서드나 명령문을 실행하는건 맞음

하지만 예외처리는 orElseThrow로 처리해야함

구멍가게 코딩단의 코드에 신세를 많이 졌지만 이제 isPresent()-get()에 관해서는 orElse(), orElseThrow()로 바꾸려고 노력하고 있음

before

       Optional<Member> result = repository.getWithRoles(username);

        if (result.isEmpty()) {
            throw new UsernameNotFoundException("이메일이나 소셜 로그인을 여부를 다시 확인해주세요.");
        }

        Member member = result.get();

after

 Member member = checkMember(username);
 
  private Member checkMember(String username) {

        return repository.getWithRoles(username).orElseThrow(() -> new UsernameNotFoundException("아이디가 없습니다."));
    }

물론 이 코드도 완벽한게 아니기 때문에 항상 더 좋은 방식을 생각해봐야겠다


참고
https://velog.io/@nswon/Java8-API-%EA%B0%9C%EB%B0%9C%EC%9E%90-Optional-%EA%B7%B8%EB%A0%87%EA%B2%8C-%EC%93%B0%EB%8A%94%EA%B1%B0-%EC%95%84%EB%8B%8C%EB%8D%B0#1-ispresent-get-%EB%8C%80%EC%8B%A0-orelse-orelsethrow
자바웹개발워크북

profile
어제보다 개발 더 잘하기 / 많이 듣고 핵심만 정리해서 말하기 / 도망가지 말기 / 깃허브 위키 내용 가져오기

0개의 댓글