inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

더 자바, Java 8

Optional API

orElseThrow()

1086

작성자 없음

작성한 질문수 0

1

optional이 널체크를 안해서 발생하는 nullPointException을 피하기 위함이라고 생각햇는데,

orElseThrow()로 예외를 발생시키면 굳이 Optional을 쓸 필요가 없는게 아닌지 헷갈리네요..

orElseThrow를 쓰는 이유가 있을까요?

java

답변 2

1

백기선

저는 NPE를 피하려고 Optional이 만들어진게 아니라, 비어있는 값을 리턴할 수도 있다는 것을 명시적으로 표현할 방법을 만들어 준거라 생각합니다. 위에 분 답변에도 공감합니다. 감사합니다.

0

euni

지나가다가 답변이 없길래 제 의견을 남겨보자면

 

if ( member.getId() != null ) { return member id; }

else { throw new MemberNotFoundException; }

 

보다는

member.getId().orElseThrow(() -> new MemberNotFoundException); 이 여러모로 낫지 않을까요

Optional의 기능 자체가 모두 하드코딩으로 해결 가능한 부분이긴 하지만 가독성도 좋지 않고 코드도 길어지니까요

 

"꼭 필요한가?"라는 논리에 따르면 Optional은 orElseThrow뿐 아니라 다른 모든 메서드도 꼭 필요한 건 아니라고 봅니다. 다만 더 간결하고 편하죠, 그리고 좀 더 고수같구요

ㅋㅋ

CompletableFuture의 get 실행에 대해 궁금한 점이 있습니다

0

232

2

기본 인터페이스의 기본 제공 메서드 관련 질문 (왜 이걸 사용하는지)

0

517

2

static 과 metaspace 관련 질문있습니다.

0

708

0

Map의 가장 큰 특징이 key는 null이 아니다

0

2381

2

Optional 질문드립니다.

0

472

0

인텔리제이 콘솔창

0

581

0

Supplier를 쓰는 이유

0

1360

1

allOf()에서 컬렉션으로 반환하는 것을 설명할 때 코드

0

709

1

[참고] LTS주기

0

471

1

findFirst함수

0

359

1

메서드 레퍼런스

1

478

1

primitive type 질문

0

303

1

FunctionalInterface 상속 관계 질문

0

293

1

함수형 인터페이스를 왜 사용하나요?

1

497

1

while문 세미콜론

0

432

1

flatMap Optional과 Stream에서의 차이점을 제가 잘 이해했는지 헷갈립니다!

0

408

1

람다식과 익명 클래스

0

321

1

steam api 예제 git 주소

3

785

1

thread.sleep질문

0

386

2

.orElse 매개변수 질문

0

265

1

isPresent( ) 와 null 질문

0

336

1

예제 코드 질문

2

290

1

코드 질문있습니다.

0

238

1

java 11 버전 설치 질문

5

352

1