Это общий вопрос программирования, не относящийся к какому-либо конкретному языку.
Обычно новый программист напишет метод, который вычисляет некоторое значение, а затем возвращает значение:
public Integer doSomething()
{
// Calculate something
return something;
}
public void main()
{
Integer myValue = doSomething();
}
Но когда возникает исключение во время вычисления something
, каков наилучший способ обработки исключения, особенно при предоставлении обратной связи с пользователем?Если вы делаете попытку / улов вычисления something
и если обнаруживается исключение, что вы возвращаете?Ничего не было рассчитано, так вы возвращаете ноль?И как только вы вернете его (каким бы оно ни было), вам нужно будет выполнить еще одну попытку / перехват в родительском методе, который проверяет, было ли возвращено правильное значение?А если нет, то убедитесь, что пользователь получил какую-то обратную связь?
Я слышал аргументы с обеих сторон таблицы о том, что вообще никогда не нужно возвращать значения, но вместо этого устанавливаю вычисляемые значения как указатели или глобальные переменные и вместо этого возвращаютолько коды ошибок из методов, а затем (в родительском методе) просто соответствующая обработка кодов ошибок.
Есть ли передовая практика или подход к этому?Есть ли хорошие ресурсы, к которым можно было бы получить доступ, чтобы узнать больше о наилучшем способе решения этой проблемы?
ОБНОВЛЕНИЕ для уточнения
Рассмотрите следующий код:
public void main()
{
int myValue = getMyValue();
MyUIObject whatever = new MyUIObject();
whatever.displayValue(myValue); // Display the value in the UI or something
}
public Integer getMyValue()
{
try
{
// Calculate some value
} catch (exception e) {
// ??
}
return value;
}
Я вызываю метод для получения некоторого значения типа int, затем возвращаю его.Вернувшись в main()
, я что-то делаю со значением, например, показываю это в журнале в этом случае.Обычно я бы отображал значение в пользовательском интерфейсе для пользователя.
В любом случае, если исключение перехвачено в getMyValue()
, то возвращается ли value
, но оно равно нулю?Что происходит в main()
тогда?Должен ли я проверить, является ли это допустимым значением и в main()
?
Мне нужна программа, чтобы соответствующим образом обработать ошибку и продолжить.Кто-то ниже предложил отобразить соответствующую информацию в пользовательском интерфейсе из метода getMyValue()
.Я вижу две потенциальные проблемы:
- Кажется, что я бы смешал бизнес-логику с (в данном случае) логикой для пользовательского интерфейса.
- Я должен был бы передать ссылкуот
MyUIObject
до getMyValue()
или что-то еще, чтобы я мог получить к нему доступ из функции.В приведенном выше простом примере это не так уж и сложно, но если есть набор элементов пользовательского интерфейса, которые необходимо обновить или изменить в зависимости от того, что происходит в getMyValue()
, передача их всех может быть немного ...
Я много читал об основах всего этого, но, похоже, не могу найти прямой ответ для вышеуказанной ситуации.Я ценю любую помощь или понимание.