Операторы возврата в блоках выгоды

Я видел, что некоторые разработчики используют оператор возврата в блоке выгоды. Почему/когда это было бы полезной техникой для использования?

Править: Я на самом деле просто видел, что ключевое слово возврата использовалось.

Спасибо

5
задан AMissico 3 March 2010 в 18:35
поделиться

6 ответов

public void Function () {

try 
{ 
    //some code here
}
catch
{ 
    return;
}

}

при возврате; при ударе поток выполнения выскакивает из функции. Это можно сделать только в методах void.

РЕДАКТИРОВАТЬ: вы делаете это, если не хотите выполнять остальную часть функции. Например, если вы выполняете ввод-вывод файла и возникает ошибка чтения, вы не хотите выполнять код, обрабатывающий данные в этом файле, поскольку у вас его нет.

1
ответ дан 13 December 2019 в 19:25
поделиться

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

try
{
   //attempt conversion
   return true;
}
catch
{
   return false;
}
7
ответ дан 13 December 2019 в 19:25
поделиться

Это было бы полезно, если вы знаете, какое возвращаемое значение функции должно быть в блоке catch.

Пример:

public bool IsDatabaseAvailable() {
    try {
        // connect
        return true;
    }
    catch (Exception) {
        return false;
    }
    finally {
        // clean up
    }
}
1
ответ дан 13 December 2019 в 19:25
поделиться

Возможно, вы захотите перехватить ошибку, зарегистрировать ее и, скажем, вернуть значение false, которое указывает, была ли функция успешной. В других ситуациях вы можете захотеть вернуть некоторые данные, которые были вычислены в блоке try

1
ответ дан 13 December 2019 в 19:25
поделиться

Некоторые методы внутри .Net Framework выдают исключение, если формат не подходит.

Хорошим примером является int.TryParse (object value)

, если ваше значение равно «10s», это вызовет исключение. В этом случае мы знаем, что это из-за недопустимого преобразования.

Итак

try 
{ 
    int.TryParse(value);
    return true; 
}
catch { return false; }

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

Если вы действительно используете эту форму для этого вопроса, пожалуйста, не делайте catch (Exception ex), так как это заставит .Net сериализовать ошибку внутри объекта, что довольно медленно.

Также важно помнить, что даже если вы используете return внутри блока try catch, он все равно выполнит блок finally.

Так что, если ваш очищающий код находится внутри finally, не беспокойтесь, фреймворк обязательно вызовет его.

Мои 2 цента. N.

1
ответ дан 13 December 2019 в 19:25
поделиться

Любая ситуация, в которой у вас есть альтернатива, если попытка не удалась. Примером может быть проверка, доступен ли файл для какой-то операции

    bool IsComplete = false;

    try
    {
      //  FileStream currentWriteableFile = 
                     File.OpenWrite(sFileLocation);          
    }
    catch(Exception)
    {
      return false;
    }
0
ответ дан 13 December 2019 в 19:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: