티스토리 뷰

Functional Inteface Exception

  • Java API 함수형 인터페이스들의 추상메서드에는 별도로 확인된 Exception을 Throws 하지 않습니다.
  • 그렇기 때문에 함수형 인터페이스에서 확인된 예외를 던지고 싶다면 별도 방법으로 처리가 필요합니다.

해결방법

  • 방법은 크게 두 가지가 있습니다.

Custom 함수형 인터페이스 정의

  • 확인된 예외를 선언하는 함수형 인터페이스를 직접 정의하는 방법
@FunctionalInterface
public interface MyFunction {
	String process(BufferedReader b) throws IOException;
}

MyFunction m = (BufferedReader br) -> br.readLine();
try {
	m.process(reader);
} catch (IOException e) {
}

익명함수 구현

  • Java API 함수형 인터페이스의 익명 클래스(람다)에 예외를 throw 해주는 방법 
  • Java API 함수형 인터페이스 형식을 사용해야 하는 경우 (ex. Function<T, R>) 혹은 직접 함수형 인터페이스를 만들기 어려운 상황에서 사용
Function<BufferedReader, String> f = (BufferedReader b) -> {
	try {
		return b.readLine();
	} catch (IOException e) {
		throw new RuntimeException(e);		
	}
};

try {
	f.apply(reader);
} catch (IOException e) {
}

관련글

 

반응형
댓글