Я думаю, что это "зависит". Я знаю, что это не ответ, но это действительно зависит. Я думаю, что кодирование в обороне - хорошая практика для подражания. Теперь, если ваша дорожка стека имеет глубину 10 уровней, и любой сбой в трассировке приводит к сбою всей операции, тогда непременно проверьте на верхнем уровне и дайте всем исключениям подняться на вершину. но если вы можете восстановить от кого-то, передавшего вам нулевую ссылку, проверьте, где это уместно. По моему опыту, когда мне приходится объединять код с другими компаниями для совместной интеграции, проверка (и ведение журнала) всего на уровне общедоступного API позволяет отклонить указание пальцем, которое происходит, когда интеграция не идет, как ожидалось.