Как узнать контракт исключений для метода в Scala?
Я долго писал на Objective-C. Все методы которые могут завершиться ошибкой имеют (так или иначе) упоминание объекта NSError. Который несет в себе информацию о месте возникновения ошибки, ее коде и полезной нагрузке (типа сообщения и прочего).
Последнее время я пишу на Scala и у меня появился вопрос касательно исключений.
Как известно Future может либо завершиться удачно либо с исключением.
В Play WS есть метод def get(): Future[WSResponse]
Семантика объекта WSResponse вполне понятна, это HTTP ответ. Но что если произошла сетевая или еще какая ошибка? Правильно - Future завершится неудачей в виде Throwable.
Как понять какие исключения мне ожидать, чтобы грамотно применить pattern matching в методе recover? Я понимаю что в Scala стоит избегать исключений и максимально пользоваться системой типов. Но исключения все-таки есть и например WS.url("http://null").get вернет java.net.ConnectException.