У меня есть немного кода как такового
try
{
result.FirstName = nodes[myIdx].Attributes["ows_FirstName"].Value;
} catch { }
Теперь я не знаю до вызова этого вызова, существует ли атрибут, который я ищу ( Хороший старый ресурс ).
В результате единственный линейный способ, которым я могу написать код, который я ищу, - это как таковой.
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, даже если он не обрабатывается? Я уверен, что есть веская причина, но не могу решить.
РЕДАКТИРОВАТЬ: Прежде чем все начнут на меня, что глотание исключения плохо, бла-бла-бла. Мы (и я) все знаем эти аргументы, но в этом (и многих) сценариях реального мира просто нет ничего исключительного в исключении, и я ничего не могу (или не должен сделать) исправить поведение.