Насколько тяжела обработка исключений в .NET?

Иногда у меня возникает ситуация, когда проще завернуть весь код в блок try-catch, чем делать много проверок, которые сильно снижают читабельность кода. Например, так

var result = string.Empty;
if (rootObject != null)
{
    if (rootObject.FirstProperty != null)
    {
        if (rootObject.FirstProperty.SecondProperty != null)
        {
            if (!string.IsNullOrEmpty(rootObject.FirstProperty.SecondProperty.InterestingString))
            {
                result = rootObject.FirstProperty.SecondProperty.InterestingString;
            }
        }
    }
}

Я действительно предпочитаю делать так

var result = string.Empty;
try
{
    result = rootObject.FirstProperty.SecondProperty.InterestingString;
}
catch { }

Но после ревью кода я часто слышу от своего наставника, что я должен избегать блоков try-catch, когда можно сделать простую проверку. Действительно ли это так критично и каждый блок try-catch съедает много системных ресурсов (относительно)? Используются ли эти ресурсы только при возникновении ошибки или каждый случай (успешный или нет) одинаково "тяжел"?

6
задан Vitalii Korsakov 24 September 2012 в 05:05
поделиться