Skip to content

왜 함수형 인터페이스는 CheckedException 예외를 던지는 동작을 허용하지 않을까? #36

Discussion options

You must be logged in to vote

우선 java에는 2가지 종류의 예외가 있다.

1. Checked Exception

Exception 클래스를 상속 받는 예외들로, 메서드가 발생시킬 수 있는 예외를 선언.
Checked Exception을 던질 수 있는 메서드를 호출할 때는 반드시 예외를 처리해야 한다.(ex : throws, try-catch)

2. Unchecked Exception

RuntimeException 클래스를 상속받는 예외들이라 예외를 처리하지 않아도 컴파일러에서 오류를 발생시키지 않는다.
그래서 Unchecked Exception을 던질 수 있는 메서드를 호출할 때는 예외 처리를 강제하지 않는다.

이러한 점에 빗대어서
함수형 인터페이스가 Checked Exception을 던지는 동작을 허용하지 않는 이유는

  1. Checked Exception은 예외처리를 강제하기 때문에 람다식이 추구하는 간결성과 표현력을 저하시킨다.
  2. 함수형 프로그래밍은 단일 책임 원칙을 중요시 하고 그에 따라 함수형 인터페이스는 단 하나의 추상 메서드를 가져야 된다.
    그래서 예외 처리는 해당 메서드의 책임을 초과하는 부분으로 간주될 수 있다.
  3. 함수형 인터페이스는 주로 람다식을 통해 익명 함수를 전달하고 실행하는 용도로 사용.
    외부에 예외를 던지는 동작은 람다식의 독립성을 훼손시킬 수 있다.

UncheckedException의 예외 동작은 허용한다것을 의미하는걸까?
-> 이 말…

Replies: 1 comment 1 reply

Comment options

You must be logged in to vote
1 reply
@Irisation23
Comment options

Irisation23 Jun 25, 2023
Maintainer Author

Answer selected by Irisation23
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
ding_cook 훈민님을 위한 라벨입니다. Q&A Q&A를 위한 라벨입니다.
2 participants