Java 8의 Lambda 함수 및 예외 처리
Java 8에서 람다 함수는 함수 유형 정의를 위한 간결한 구문을 제공합니다. 그러나 잠재적으로 확인된 예외를 발생시킬 수 있는 람다 함수를 처리할 때 일반적인 문제가 발생합니다.
IOException을 발생시키는 다음 람다 함수를 고려하십시오.
Integer myMethod(String s) throws IOException
이에 대한 참조를 생성하려고 시도합니다. 표준 Function 인터페이스를 사용하는 메서드를 사용하면 컴파일 오류가 발생합니다. 이는 Function 인터페이스가 확인된 예외를 선언하지 않아 myMethod와 같은 메소드와 호환되지 않기 때문입니다.
이 문제를 해결하기 위해 다음과 같은 몇 가지 옵션이 있습니다.
코드를 제어할 수 있는 경우 사용자 정의를 정의할 수 있습니다. 검사된 예외를 명시적으로 선언하는 기능적 인터페이스입니다. 예:
@FunctionalInterface public interface CheckedFunction<T, R> { R apply(T t) throws IOException; }
그런 다음 이 사용자 정의 인터페이스를 사용하여 myMethod를 참조할 수 있습니다:
void foo (CheckedFunction f) { ... }
또는 myMethod를 체크된 메서드를 발생시키지 않는 새로운 메서드로 래핑할 수도 있습니다. 예외. 예를 들어:
public Integer myWrappedMethod(String s) { try { return myMethod(s); } catch(IOException e) { throw new UncheckedIOException(e); } }
이제 함수 인터페이스를 사용하여 이 래핑된 메서드를 참조할 수 있습니다.
Function<String, Integer> f = (String t) -> myWrappedMethod(t);
마지막 옵션으로 체크된 항목을 명시적으로 처리하는 람다 함수 본문을 정의할 수 있습니다. 예외. 예:
Function<String, Integer> f = (String t) -> { try { return myMethod(t); } catch(IOException e) { throw new UncheckedIOException(e); } };
위 내용은 Java 8 Lambda 함수에서 확인된 예외를 어떻게 처리할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!