[Java] orElseThrow로 코드 가독성을 향상시키자

chiyongs·2022년 6월 24일
5
post-thumbnail

orElseThrow

프로젝트를 진행하면서 Optional 객체의 유무를 판단하고 예외를 처리하기 위해 if문을 사용해왔습니다.
if문을 사용하면서 예외 처리 또는 값을 반환하다보니 코드의 가독성이 떨어졌습니다.
orElseThrow를 통해 Optional에서 원하는 객체를 바로 얻거나 예외를 던질 수 있습니다.

예시 코드

public class ItemService {
	/** if문으로 처리하다보니 코드가 길어지고 반복된 작업을 해야한다는 불편함이 존재 **/
    // 예외 대신 null을 반환
    Item findItemById_if(Long itemId) {
    	Optional<Item> item = itemRepository.findById(itemId);
        if(item.isPresent()) {
        	...
            return item.get();
        }
    	return null;
    }
    
    // 예외 던짐
    Item findItemById_if2(Long itemId) {
    	Optional<Item> item = itemRepository.findById(itemId);
        if(item.isEmpty()) {
        	throw new NoSuchElementException();
        }
    	return item.get();
    }
   
   	// orElseThrow를 사용하여 코드 가독성 향상!!
    // 해당 item이 없다면 예외, 있다면 return -> 가독성 향상
    Item findItemById_orElseThrow(Long itemId) {
    	return itemRepository.findById(itemId)
        				.orElseThrow(() -> new NoSuchElementException());
    }
}


Ref

1개의 댓글

현재 프로젝트의 일부로 if 문을 사용하여 Optional 객체가 있는지 확인하고 예외를 처리하고 있습니다.
https://velog.io/@chiyongs/orElseThrow Monkey Mart

답글 달기