Здесь я вижу три способа:
1) заставить функцию возвращать это значение явно
2) добавить дополнительный аргумент в список аргументов функции и передать держатель строки в качестве этого параметра. После того, как функция завершит свое выполнение, этот держатель строки будет содержать результат функции.
3) сгенерировать исключение из этой функции, которое будет содержать результат.
Для себя я вижу первый выбор более предпочтительным, потому что он простой, интуитивно понятный и прямой.
С другой стороны, когда выполнение функции идет неправильно, могут быть дополнительные варианты, такие как выбросить исключение или использовать переменную, переданную через параметр, для сохранения ошибок, если они произойдут.
Интуитивно я вижу, что идеальный выбор - иметь явное возвращаемое значение и генерировать объявление. Таким образом, возвращаемое значение используется для нормального выполнения, и пойманное исключение будет сигнализировать о ненормальной ситуации. Но я сам не слишком люблю исключения, если только это не является совершенно непредсказуемой ошибкой, поэтому я бы использовал явное возвращаемое значение и дополнительный параметр для хранения некоторых журналов или ошибок вне ситуации.
Пожалуйста, посоветуйте книги или статьи по этой теме (не обязательно говорить о Java, любые другие языки с аналогичными механизмами также подходят).