Здравствуйте, DarkEld3r, Вы писали:
vsb>>Во-вторых если функция сейчас не бросает ошибок, а завтра начинает бросать, мне надо менять её тип, потом проходить по всем местам её использования и как минимум добавлять туда этот самый вопросик. Потенциально надо рекурсивно менять тип этой вызывающий функции и так далее.
DE>Это как раз преимущество. Внезапно прилетающее исключение не начнёт ломать код, который к этому не был готов. Мы сразу на этапе компиляции увидим места, которые нужно поправить.
Я не понимаю, что такое "код, который к этому не был готов". У меня есть воспоминания про exception-safety в С++, но там это было обосновано повсеместным ручным управлением памятью, а в современном C++ наверное и это стало не важно. А в Java что такое код, который не готов к исключениям — ну это прям постараться надо, чтобы такой код написать. Если писать в более-менее общепринятом стиле, где нет долгоживущих объектов, а те, которые долгоживущие — те обычно иммутабельные и из мутабельности там максимум — кеши, где с базой работают через транзакции, то исключение может вылетать в любом месте (вообще-то в Java оно и так может вылетать почти в любом месте) и на корректность системы это не повлияет.
Вот сколько пишу на жаве, лет 15 наверное, не припомню ни одного случая, чтобы исключение в одном запросе как-то повлияло на другой запрос.