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