Я работаю над объектом, который в какой-то момент создает экземпляр другого объекта. Этот внутренний объект может вызвать исключение. Я мог бы просто позволить этому пузырьку исключений, чтобы какой-либо код обрабатывал родительский объект, что я и хочу делать, следуя философии KISS. Или я мог бы выполнять некоторую обработку исключений в родительском объекте и, возможно, дать более значимое исключение для «клиентского» кода. Есть ли общее правило, чтобы следовать, или я решаю, что делать в каждом конкретном случае?
С дочерним объектом я нашел время, чтобы написать коды ошибок, поэтому в какой-то момент в будущем я мог бы дать конечному пользователю более содержательное сообщение об ошибке. Если родительский объект и дочерний объект имеют собственный набор кодов ошибок, как мне это обрабатывать? Кажется, я бы написал обработчик исключений, который просматривает код ошибки и его исходный класс, не так ли?
Если «внешний» объект не может обрабатывать исключения, выброшенные «внутренним» объектом, то он не должен пытаться. В лучшем случае он может поймать несколько наиболее распространенных и повторить с чуть большей информацией.
Предполагая, что внешний объект не смог обработать исключение, я бы только поймал и реконструировал его как другое Исключение, если была хорошая причина скрывать внутренний объект. Вы не хотите, чтобы весь ваш код зависел от внутренних факторов от того, что не нужно раскрывать.
Кроме этого, если внешний объект не знает, что делать или не имеет ничего нового, он не должен касаться исключения.