Вы должны поймать те исключения, для которых вы можете разработать разумную стратегию для решения проблемы. Нет смысла ловить исключение, если нет разумной альтернативы (попробуйте позже, используя другую технологию / технику для достижения той же общей цели, сообщая пользователю, что цель в настоящее время не может быть достигнута и что они могут сделать, чтобы исправить ситуацию ситуация ).
Исключение (простите): Стоит иметь что-то на самом верхнем уровне (например, Application.ThreadException или AppDOmain.UnhandledException), чтобы попытаться зарегистрировать те исключения, которые вы не обработали. Если регистрация не удалась, вы все равно обречены.
Но слепое проглатывание всех исключений (особенно на низком уровне) может привести к очень неприятным сеансам отладки / диагностики.