Optional의 orElseThrow 와 orElse

진기·2024년 4월 2일

Optional이란?

orElseThrow 와 orElse를 설명하기에 앞서 먼저 Optional에 대해 간단하게 알아보자.
JAVA에서 Null 참조시 NullPointerException을 방지해주는 클래스를 Optional이라 한다. Optional의 목적은 자바 개발 시 NullPointerException이 너무 자주 발생해서 데이터가 null이어도 처리가 가능하도록 도와주는 것이 Optional이라고 보면된다.

orElseThrow 사용법

User user = userRepository.findById(id)
        .orElseThrow(() -> new IllegalArgumentException("user doesn't exist");
  • orElseThrow는 Optinal의 인자가 null일 경우 예외처리를 시킨다.
    보통 JPA 사용 시에 위처럼 사용하는데 가져온 값이 null일 경우 예외를 발생시킨다.

orElse 사용법(JPA)

String isNull;
String name;
        
isNull = "loose";
name = Optional.ofNullable(isNull).orElse("test");

System.out.println(name); //isNull값이 null이 아니므로 "loose" 출력

isNull = null;
name = Optional.ofNullable(isNull).orElse("test");

System.out.println(name); //isNull값이 null이므로 "test" 출력
  • Optional에 올 값이 null인 경우 orElse 안에 있는 내용을 실행 시킨다.
  • 그래서 orElse~는 if문을 이용해 처리해야 하는 명령어를 짧게 람다식처럼 처리할 수 있는 메소드라고 볼 수 있다.

orElse~의 룰(리턴값 일치)

String name1 = Optional.ofNullable("test1").orElse("test2");
  • 너무 당연한 것이지만 orElse를 사용할 때는 Optional의 대상이 되는 값과 orElse 내의 매개변수 리턴 값은 같아야 한다.
    • 만약 같지 않다면 orElse가 아닌 if문을 이용해서 처리해야 한다.
  • orElse는 클린코드 측면에서 일반 변수를 전달하기 때문에 람다식에 비해서 직관적이다.
profile
개발 성장 이야기

0개의 댓글