Если функция может завершиться успешно и вернуть результат, или потерпеть неудачу и не вернуть результат, вы можете использовать тот же шаблон, что и Microsoft в ряде мест. TryParse - идеальный пример.
int result;
if ( Int32.TryParse("MyStringMayFail", out result) )
{
// Succeeded result is usable
}
else
{
// failed result is undefined and should not be trusted.
}
Фактический тип возврата метода указывает на успех или неудачу, параметризованная переменная содержит «результат» любой операции, которую может выполнять функция. Этот стиль кодирования позволяет конечному пользователю функции напрямую кодировать успех или неудачу функции.
Создать собственную реализацию методов TryParse
очень просто, они обычно сочетаются с Parse
методами, которые выдают исключения, если что-то не получается во время обработки.