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