У меня есть немного кода, как такойПочему попробовать блоки нужно поймать
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 { }
....
Теперь у меня нет никакой пользы для раздела улова этого кода и в конечном итоге с огромным количеством линий, которые полностью избыточными.
Почему я не мог просто сделать
try { result.FirstName = nodes[myIdx].Attributes["ows_FirstName"].Value; }
Так почему же мы явно вынуждены объявить поймать блок, даже если он не обрабатывается? Я уверен, что есть веская причина, но не могу это решить.
EDIT: Прежде, чем все начнут уходить от меня, что проглатывание исключения плохое, бла-бла-бла. Мы (и я) все знаем эти аргументы, но в этом (и многих) сценариях реального мира нет ничего исключительного в исключении, и я ничего не могу сделать (или не должен делать), чтобы исправить поведение.
Прочитайте эту [пост] [1] [1]: http://stackoverflow.com/questions/1573130/net-throwing-custom-exceptions – CheGueVerra
@CheGueVerra - Не знаю, как это отношение к мой вопрос? –