자바 8 방법 참조 : 매개 변수가 결과


147

을 공급할 수있는 공급 업체를 제공 내가 생성자 매개 변수에 대해 묻는 예외 유형

java.util.Optional.orElseThrow() 

를 사용하고 싶습니다. 이런 식으로 :

orElseThrow(MyException::new(someArgument)) // obviously NOT working 

내 인수 값을 전달하는 공급 업체를 만드는 방법이 있습니까?

+19

과 같은 오류 메시지가 표시됩니다. 왜 orElseThrow (() -> new MyException (someArgument)) '를 할 수 없습니까? 07 apr. 142014-04-07 15:51:04

289

확실히. orElseThrow(() -> new MyException(someArgument)).


17

orElseThrow 메서드에서 RuntimeException 만 throw 할 수있는 것처럼 보입니다. 그렇지 않으면 MyException cannot be converted to java.lang.RuntimeException

+1

그루비에서'선택 사항 '을 사용하면 고마워요. 그루비 클로저에서'Exception throw '를 시도했지만'java.lang.reflect.UndeclaredThrowableException'으로 실패하고'RuntimeException'이 고쳐서 고쳐졌습니다. 12 apr. 152015-04-12 17:19:54

  0

그 점을 잘 알고 있습니다. 다행히도 제 경우에는 RuntimeExceptions를 사용하고 있지만 이것이 항상 그런 것은 아닙니다. 25 jul. 172017-07-25 15:15:24


3
optionalUsers.orElseThrow(() -> new UsernameNotFoundException("Username not found"));