Иногда у меня возникает ситуация, когда проще завернуть весь код в блок 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 съедает много системных ресурсов (относительно)? Используются ли эти ресурсы только при возникновении ошибки или каждый случай (успешный или нет) одинаково "тяжел"?