Тебя никто не заставляет. У тебя есть сколько-то штатных кодов возврата и одна функция (по сути, метод класса), которая преобразует код возврата в что-то удобочитаемое. А если хочется что-то более сложное, то мы приходим либо к исключениям, либо к голанг-стайл возврату, когда у тебя из функции приезжает пара (res, err).
no subject