Все зависит от ожидаемого результата.Если для какого-либо процесса ожидается тайм-аут (например, ожидание пользовательского ввода), вы делаете его кодом возврата.Если тайм-аут является вероятной причиной ошибки (например, работа сети), вы делаете это исключением.Вы могли бы даже иметь две версии: одна, которая возвращает значение, указывающее, истекло ли время, и другая, которая просто генерирует исключение.