Это не просто вопрос способности восстановиться с исключения. То, что имеет значение больше всего, по-моему, интересуется ли вызывающая сторона ловлей исключения или нет.
, Если Вы пишете, библиотека, которая будет использоваться в другом месте, или слой низшего уровня в Вашем приложении, спрашивает себя, если вызывающая сторона интересуется ловлей (знающий о) Ваше исключение. Если он не, то используйте исключение непроверенное, таким образом, Вы не обременяете его излишне.
Это - философия, используемая многими платформами. Spring и в спящем режиме, в особенно, приходит на ум - они преобразовывают известную контролируемую исключительную ситуацию в исключение непроверенное точно, потому что контролируемые исключительные ситуации злоупотребляются в Java. Одним примером, о котором я могу думать, является JSONException с json.org, который является контролируемой исключительной ситуацией и является главным образом раздражающим - это должно быть неконтролируемо, но разработчик просто не продумал его.
Между прочим, большую часть времени интерес вызывающей стороны к исключению непосредственно коррелируется к способности восстановиться с исключения, но это не всегда имеет место.
Попробуйте это:
(0 /: l) { case (a, (b, c)) => b + a }
Обратите внимание, что в дополнение к ответу Уолтера вы можете использовать подчеркивание _
вместо c
в шаблоне сопоставления:
val i = (0 /: l) { case (a, (b, _)) => b + a }
Он действует как все, что идет заполнитель в шаблоне Tuple2
и (на мой взгляд) дает понять, что вы на самом деле не используйте значение в своих вычислениях.
Кроме того, в 2.8 вы могли бы сделать:
val i = l.map(_._1).sum