@glaucidium

Как лучше возвращать результат из функции, если нет гарантии что она завершиться корректно?

Бывает, что функция не всегда может выдать результат, т.к. либо параметры не корректны, либо исключение возникнет, либо операция будет отменена извне.

Существует ли наиболее лучший способ вывода результата?
* Поместить функцию в класс, а в классе создать поля для сигнализации о каждом случившемся нюансе.
* Выходным типом функции объявить структуру, где поля будут отвечать за каждый возможный нюанс. И работать с выданным результатом так:
if(result.IsCorrect && result.value)
x = result.value
else if (result.canceled)

* Спокойно писать функцию, а если что пойдёт не так, выдавать исключения.
* Использовать события.
* Использовать монады.
Или как всегда - выбор решения зависит от конкретной решаемой задачи?
  • Вопрос задан
  • 99 просмотров
Пригласить эксперта
Ответы на вопрос 3
petermzg
@petermzg
Самый лучший программист
Выбор зависит от задачи.
Вот вам еще вариант. Возвращать инстанс исключения или null, если нет ошибки, а значение через out параметр.
Ответ написан
Комментировать
@akass
Developer
Функция возвращает bool - успешна ли выполнена. А результат в выходном параметре.
По примеру TryParse
Ответ написан
Комментировать
EreminD
@EreminD
Кое-что умею
var result = 0;
try
{
result = magic();
}
catch
{
 /*....*/
}
finaly
{
return result;
}


Тут либо дефолтное значение будет, либо то, что получится в try, если все успешно прошло
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы