Errors 초급

인수 없는 Optional.orElseThrow()

get()의 명확하고 의도를 드러내는 대안으로 Optional.orElseThrow()를 사용합니다.

✕ Java 8
// Risky: get() throws if empty, no clear intent
String value = optional.get();

// Verbose: supplier just for NoSuchElementException
String value = optional
    .orElseThrow(NoSuchElementException::new);
✓ Java 10+
// Clear intent: throws NoSuchElementException if empty
String value = optional.orElseThrow();
이 코드에 문제가 있나요? 알려주세요.
📖

자기 문서화

orElseThrow()는 값이 없는 경우가 예상치 못한 상황임을 명확히 알립니다.

🔒

get() 회피

정적 분석 도구는 get()을 위험하다고 표시합니다; orElseThrow()는 관용적입니다.

보일러플레이트 감소

기본 NoSuchElementException을 위한 공급자를 전달할 필요가 없습니다.

이전 방식
get() 또는 orElseThrow(공급자)
모던 방식
orElseThrow()
JDK 버전
10
난이도
초급
인수 없는 Optional.orElseThrow()
사용 가능

JDK 10 (2018년 3월) 이후 사용 가능.

Optional.get()은 실패 가능성을 숨기기 때문에 코드 냄새로 널리 인식됩니다. Java 10에 추가된 인수 없는 orElseThrow()는 동일한 일을 하지만 의도를 명시합니다: 개발자는 값을 기대하며 없으면 예외를 원합니다.

공유 𝕏 🦋 in