Java에서 확인 된 예외 는 그렇게 나쁘지 않습니다. 물론 ADT는 Scala에 더 적합한 옵션이지만 Java에서는 확인 된 예외가 대신하고 깔끔한 코드 인수는 블로그가 얼마나 많은 블로그를 반복하더라도 무의미합니다. 기본적으로 나사 유형 시스템, 예쁜 코드는 시스템을 자동으로 강력하게 만들기 때문에 시스템에서 발생할 수있는 가혹하고 수리 가능한 조건을 행복하게 무시해야한다고 말합니다 . 이러한 추론은 왜 많은 Java 코더가 자발적으로 코드를 XML로 옮길 수 있는지 설명합니다 (Spring, Maven 등. 나는 여기서 꽤 중요한 부분을 그리워합니다 ).
http://www.scala-lang.org/old/node/8787.html 아래 M. Odersky가 제공 한 Scala에서 확인 된 예외가없는 이유 는 놀랍지 않게 다르며 의미가 있습니다.
확인 된 예외의 문제점은 목록의 map 메소드로 가장 잘 설명됩니다.
def map[B](f: A => B): List[B]
@throws로지도에 주석을 달는 방법은 무엇입니까? map이 @throws 주석 자체를 얻지 못하면 @throws가있는 함수를 전달할 수 없습니다. 그것은 맵이 사용될 수있는 방법에 대한 번거로운 제한과 구별을 도입 할 것입니다. 어떻게 든 map이 함수 인수가 던지는 모든 예외를 던진다 고 말할 수 있다면 상황이 더 좋을 것입니다. 이것을 표현할 수있는 효과 시스템이 있지만, 지금까지 내가 본 모든 표기법이 너무 무겁습니다.
Lukas Rytz는지도 유형 및 기타 일반적인 기능을 간결하고 정확하게 표현하는 데 사용할 수있는 경량 효과 시스템에 대한 연구를 수행하고 있습니다. 그것은 연구이므로 현재 우리가 어느 정도의 성공을 거둘 것이며 스칼라에 얼마를 넣을 수 있는지는 확실하지 않습니다. 이상적으로는 선택적 유형 시스템으로 특정 시점에 추가 할 수 있습니다. 그러나 구체적인 예측을하기에는 너무 이르다.
건배
확실하지 않지만 Java 8 람다는 검사되지 않은 예외로 제한됩니다.JDK 8 ( java.util.function.*
) 에서 대부분의 (모든?) 새로운 기능 인터페이스의 메소드는 검사되지 않은 예외도 선언하지 않습니다.