В ссылке на статью есть примечание, что исключения не должны использоваться для управления потоком - что, как представляется, подразумевается в примерах вопросов. Исключения должны отражать сбой уровня метода. Иметь подпись, что можно выбросить ошибку, кажется, что дизайн не продуман.
Книга Джеффри Рихтерса CLR через C # указывает: «Вы должны вызвать исключение, когда метод не может выполнить свою задачу, как указано в его имени».
Его книга также указала на очень распространенную ошибку. Люди склонны писать код, чтобы поймать все (его слова «Повсеместная ошибка разработчиков, которые не были должным образом обучены правильному использованию исключений, склонны использовать блоки catch слишком часто и ненадлежащим образом. Когда вы ловите исключение, вы утверждаете Вы ожидали этого исключения, понимаете, почему оно произошло, и знаете, как с ним бороться. ")
Это заставило меня попытаться написать код для исключений, которые я могу ожидать и могу обработать в своей логике, иначе это должна быть ошибка.
Подтвердите свои аргументы и предотвратите исключения, и поймайте только то, что вы можете обработать.