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 |