[스프링 부트] orElseThrow 메소드 구현부

2024. 7. 15. 13:42·Springboot
public <X extends Throwable> T orElseThrow(Supplier<? extends X> exceptionSupplier) throws X {
        if (value != null) {
            return value;
        } else {
            throw exceptionSupplier.get();
        }
    }

<X extends Throwable> 타입 파라미터 

 

T 반환하는 값 ( Optinal 값 타입, 보통 클래스 레벨에서 정의된 제네릭 타입)

 

Supplier<? extends X> exceptionSupplier 예외를 생성하는 공급자 함수

여기서 ? 는 와일드카드 타입이며 

X의 하위 타입 중 하나 임을 나타낸다.

 

 

Null 이 아닌 경우 

Optional 생성자에서 제네릭 타입의 value의 값을 넣었을 것이고 

그 value를 리턴 

 

Null 인경우 

Throwable을 상속 받는 예외 클래스 X를 던진다.

 

@Converter
public class StoreConverter {

    public StoreEntity toEntity(
            StoreRegisterRequest request
    ) {
        return Optional.ofNullable(request)
                .map(it->{
                    return StoreEntity.builder()
                            .name(request.getName())
                            .address(request.getAddress())
                            .category(request.getStoreCategory())
                            .thumbnailUrl(request.getThumbnailUrl())
                            .minimumAmount(request.getMinimumAmount())
                            .minimumDeliveryAmount(request.getMinimumDeliveryAmount())
                            .phoneNumber(request.getPhoneNumber())
                            .build()
                            ;
                })
                .orElseThrow(()->new ApiException(ErrorCode.NULL_POINT)); //orElseThorw는 함수형 인터페이스를 받는다.

 

'Springboot' 카테고리의 다른 글

[SpringBoot] Filter에서의 예외처리  (0) 2025.03.08
[스프링 부트] Stream.map() 함수  (0) 2024.07.20
[스프링 부트] JWT 검증 및 사용자 정보 가져오기  (0) 2024.07.15
[스프링 부트] Interceptor를 통한 인증  (0) 2024.07.10
[스프링 부트] Exception Handler  (0) 2024.07.10
'Springboot' 카테고리의 다른 글
  • [SpringBoot] Filter에서의 예외처리
  • [스프링 부트] Stream.map() 함수
  • [스프링 부트] JWT 검증 및 사용자 정보 가져오기
  • [스프링 부트] Interceptor를 통한 인증
코딩 못하는 감자
코딩 못하는 감자
  • 코딩 못하는 감자
    코딩 못하는 감자의 기록
    코딩 못하는 감자
  • 전체
    오늘
    어제
    • 분류 전체보기 (91)
      • Kubernetes (10)
      • Github Action (1)
      • Docker, Container (3)
      • Springboot (26)
      • Baekjoon (4)
      • 명품 운영체제 (9)
      • 데이터베이스 (2)
      • JSP (3)
      • 안드로이드프로그래밍 (1)
      • 미니프로젝트 (1)
      • 용어정리 (0)
      • 소프트웨어공학 (3)
      • 운영체제 (2)
      • Flutter (0)
      • Git (1)
      • HTTP (0)
      • RAG (1)
      • Database (2)
      • FastAPI (1)
      • Elasticsearch (7)
      • Redis (0)
      • JPA (5)
      • Linux (1)
      • MCP (1)
  • 블로그 메뉴

    • 홈
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    elasticsearch 커스텀분석기
    fuzziness
    SpringBoot
    응답 로그
    엘라스틱서치 인덱스 복사
    Dockerfile
    elasticsearch ngram
    mcp #model context protocol #claude desktop #mcp claude연동 #claude 파일 시스템 연동
    엘라스틱서치 인덱스
    elasticsearch analyzer
  • hELLO· Designed By정상우.v4.10.3
코딩 못하는 감자
[스프링 부트] orElseThrow 메소드 구현부
상단으로

티스토리툴바