Зачем блокам try нужен catch

У меня есть немного кода как такового

try
{
    result.FirstName = nodes[myIdx].Attributes["ows_FirstName"].Value;
} catch { }

Теперь я не знаю до вызова этого вызова, существует ли искомый атрибут ( Старый добрый sharepoint).

В результате единственный линейный способ написать код, который я хочу создать, — это как таковой.

try
{
    result.FirstName = nodes[myIdx].Attributes["ows_FirstName"].Value;
} catch { }
try
{
    result.LastName = nodes[myIdx].Attributes["ows_LastName"].Value;
} catch { }

....

Теперь я не использую раздел catch этого кода и получаю огромное количество абсолютно избыточных строк.

Почему я не мог просто сделать

try { result.FirstName = nodes[myIdx].Attributes["ows_FirstName"].Value; }

Так почему же мы явно вынуждены объявлять блок catch, даже если он не обрабатывается? Я уверен, что есть веская причина, но я не могу ее решить.

РЕДАКТИРОВАТЬ:Прежде чем все начнут злиться на меня, что проглатывание исключения — это плохо, бла-бла-бла. Мы (и я) все знаем эти аргументы, но в этом (и многих) сценариях реального мира просто нет ничего исключительного в исключении, и я ничего не могу сделать (или должен сделать), чтобы исправить поведение.

5
задан Maxim Gershkovich 15 March 2012 в 02:24
поделиться