выдать исключение в блоке попытки, а не поймать блок?

Я наследовал код в нашем проекте, который похож на это. Это - метод в классе.

protected override bool Load()
{
    DataAccess.SomeEntity record;

    try
    {
        record = _repository.Get(t => t.ID.Equals(ID));

        if (record == null)
        {
            throw new InvalidOperationException("failed to initialize the object.");
        }
        else
        {
            this.ID = record.ID;
            // this.OtherProperty = record.SomeProperty;
            // etc
        } 
    }
    catch (Exception)
    {
        throw;
    }

    return true;
}

Если бы я затем называю этот метод Загрузки от своего уровня UI, я, вероятно, хотел бы иметь блок выгоды попытки для ловли любого исключения, вызванного отказом Загрузить экземпляр, например, InvalidOperationException, но вышеупомянутые чувства кода неправильно мне.

Разве InvalidOperationException не будет глотать оператор выгоды? тот оператор выгоды также поймает потенциальные проблемы с _repository. Доберитесь, а также потенциальные проблемы с установкой свойств, если запись допустима.

Я думал, что должен, возможно, реструктурировать его путем добавления большего количества операторов выгоды попытки, чтобы обработать Получить операцию и операции установки свойства отдельно, или добавить больше блоков выгоды, обрабатывающих различные исключения, но я спросил коллегу, и он предположил, что выгода попытки не важна в этом случае и должна быть удалена полностью, оставив его как:

protected override bool Load()
{
    DataAccess.SomeEntity record;

    record = _repository.Get(t => t.ID.Equals(ID));

    if (record == null)
    {
        throw new InvalidOperationException("failed to initialize the object.");
    }
    else
    {
        this.ID = record.ID;
        // this.OtherProperty = record.SomeProperty;
        // etc
    } 

    return true;
}

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

5
задан ChaosPandion 5 August 2010 в 11:16
поделиться