В книге «функционального программирования в Scala», есть некоторые слова говорят о «проверяемое исключение»:Не ясно, о «Проверено исключения» объяснения в «функционального программирования в Scala»
Проверяемые исключения
Проверенные исключения Java, по крайней мере, вынуждают принять решение о том, следует ли обрабатывать или ререйзировать ошибку, но они приводят к значительному шаблону для вызывающих абонентов. Что еще более важно, они не работают для функций более высокого порядка, которые не могут быть осведомлены о конкретных исключениях, которые могут быть вызваны их аргументами. Например, рассмотрим функцию карты мы определили для списка:
def map[A,B](l: List[A])(f: A => B): List[B]
Эта функция, безусловно, полезна, весьма общий характер, а не в ладах с использованием проверяемых исключений - мы не можем иметь версию карты для каждое исключенное исключение, которое может быть выбрано
f
. Даже если бы мы захотели сделать это, как бы отображалась даже информация о том, какие исключения возможны? Вот почему общий код, даже на Java, часто используется при использовании RuntimeException или некоторых распространенных типов исключений.
Я прочитал этот раздел несколько раз, но до сих пор не ясно, почему проверяемое исключение не работает для функций высшего порядка.
Может ли кто-нибудь привести некоторые примеры, чтобы сделать его более понятным?