Я думаю, что это - превосходный вопрос и нисколько не спорный. Я думаю, что сторонние библиотеки должны (в целом) бросить , снял флажок исключения. Это означает, что можно изолировать зависимости от библиотеки (т.е. Вы не должны или повторно бросать их исключения или бросок Exception
- обычно плохая практика). Spring уровень DAO является превосходным примером этого.
, С другой стороны, исключения из базового API Java должны в целом быть проверены, если они могли когда-нибудь быть обработанными. Возьмите FileNotFoundException
или (мой фаворит) InterruptedException
. Эти условия должны почти всегда быть обработанными конкретно (т.е. Ваша реакция на InterruptedException
не является тем же как Вашей реакцией на IllegalArgumentException
). То, что Ваши исключения проверяются разработчики сил для размышления о том, управляемо ли условие или нет. (Тем не менее я редко видел InterruptedException
обработанный правильно!)
Еще одна вещь - RuntimeException
не всегда, "где разработчик получил что-то не так". Недопустимое исключение аргумента выдается, когда Вы пытаетесь создать enum
использование valueOf
и нет никакого enum
из того имени. Это - не обязательно ошибка разработчиком!
Стандартный пакет библиотеки open-uri
- это то, что вам нужно:
require 'open-uri'
contents = open('http://www.example.com') {|io| io.read}
# or
contents = URI.parse('http://www.example.com').read
require 'net/http'
Net::HTTP.get(URI.parse('http://www.example.com/index.html'))
Не знаю, почему я не нашел этого раньше. Если нет лучшего способа, я пойду этим!