Можно ли использовать оператор return в блоке try? как? - PullRequest
0 голосов
/ 13 мая 2010

Можно ли использовать оператор return в блоке try? Как использовать этот оператор.

Ответы [ 5 ]

8 голосов
/ 13 мая 2010

Вы можете вернуться из блока try, но имейте в виду, что код в условии finally будет выполнен перед возвратом из метода. Например, вызов MessageBox.Show(test().ToString()); с использованием метода, приведенного ниже, приведет к появлению двух окон сообщений (в первом отображается «3», а во втором «1»).

    int test()
    {
        try
        {
            return 1;
            throw new Exception();
        }
        catch (Exception e)
        {
            return 2;
        }
        finally
        {
            MessageBox.Show("3");
        }
    }
4 голосов
/ 13 мая 2010

Конечно, вы можете использовать return в блоке try, и синтаксис такой же, как и везде.

try
{
    return 0;
}
catch (Exception e)
{
    // handle exception
}
0 голосов
/ 13 мая 2010

Ответ на этот вопрос - Да. В качестве примера для этого вы можете обратиться к следующему вопросу: наконец и возврат Надеюсь, вы также получите разъяснение.

0 голосов
/ 13 мая 2010

Да.

Я могу использовать локальные переменные без необходимости расширять их область действия, например.

int Foo(string bar) {
    try {
        int biz = int.Parse(bar);

        return biz;
    } catch(...) {
        // Handle bad `bar`
    }
}
0 голосов
/ 13 мая 2010

Конечно, вы можете сделать это следующим образом:

public string X(..)
{
    try
    {
        //do something
        return value;
    }
    catch(Exception ex)
    {
       throw;
       //or return here
    }
}
...