dlaczego instrukcja return musi poprzedzać instrukcję throw w bloku catch

Poniższy kod narzeka

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

nie będzie to:

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

Nie rozumiem ... Myślałem, że mój csc101 powiedział mi, że instrukcje zwrotne powinny zawsze być ostatnią instrukcją w funkcji i że wychodzą z funkcji i zwracają kontrolę do kodu wywołującego. Dlaczego to przeczy logice mojego profesora i dlaczego tylko jeden z nich generuje ostrzeżenie?

questionAnswers(5)

yourAnswerToTheQuestion