почему оператор return должен предшествовать оператору throw в блоке catch

Код ниже будет жаловаться

try
{
    session.Save(obj);
    return true;
}
catch (Exception e)
{
    throw e;
    return false;  // this will be flagged as unreachable code
}

тогда как это не будет:

try
{
    session.Save(obj);
    return true;
}
catch (Exception e)
{
    return false;
    throw e;
}

Я не понимаю ... Я думал, что мой csc101 сказал мне, что операторы return всегда должны быть последними в функции и что она выходит из функции и возвращает управление вызывающему коду. Почему это противоречит логике моего профессора, и почему только один из них генерирует предупреждение?

Ответы на вопрос(5)

Ваш ответ на вопрос