>Java >java지도 시간 >Java 8 Lambda 표현식에서 확인된 예외를 어떻게 처리할 수 있습니까?

Java 8 Lambda 표현식에서 확인된 예외를 어떻게 처리할 수 있습니까?

DDD
DDD원래의
2024-12-16 21:22:19385검색

How Can I Handle Checked Exceptions in Java 8 Lambda Expressions?

Java 8 Lambda 함수에서 예외 처리

람다 표현식을 사용하여 메서드에 대한 참조를 생성할 때 예외 처리를 고려하는 것이 중요합니다. 기본 함수 참조 유형은 IOException을 확장하는 것과 같은 확인된 예외를 지원하지 않습니다.

이 문제를 해결하려면 다음 두 가지 접근 방식이 있습니다.

1. 사용자 정의 기능 인터페이스 정의

코드를 제어할 수 있는 경우 확인된 예외를 명시적으로 선언하는 사용자 정의 기능 인터페이스를 생성할 수 있습니다.

@FunctionalInterface
public interface CheckedFunction<T, R> {
  R apply(T t) throws IOException;
}

그런 다음 사용자 정의 기능 인터페이스를 사용합니다. 함수 참조를 정의하는 인터페이스:

void foo(CheckedFunction<String, Integer> f) { ... }

2. 확인된 메서드 래핑

확인된 메서드를 제어할 수 없는 경우 확인된 예외를 선언하지 않는 메서드로 래핑할 수 있습니다.

public Integer myWrappedMethod(String s) {
  try {
    return myMethod(s);
  } catch (IOException e) {
    throw new UncheckedIOException(e);
  }
}

래핑된 메소드를 사용하면 다음과 같이 함수 참조를 생성할 수 있습니다.

Function<String, Integer> f = (String t) -> myWrappedMethod(t);

또는 예외 처리와 함께 람다 표현식을 사용할 수 있습니다. block:

Function<String, Integer> f =
  (String t) -> {
    try {
      return myMethod(t);
    } catch (IOException e) {
      throw new UncheckedIOException(e);
    }
  };

이러한 기술을 사용하면 Java 8 람다 함수에서 확인된 예외를 원활하게 처리하여 코드가 강력하고 예외로부터 안전하게 유지되도록 할 수 있습니다.

위 내용은 Java 8 Lambda 표현식에서 확인된 예외를 어떻게 처리할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.