Если вы вызываете исключение, вы должны записать его в журнал, когда оно произойдет, а затем всплыть. В противном случае только конечный пользователь должен регистрировать исключение (у вас, конечно, может быть много трассировок, и в этом случае оно может быть зарегистрировано совсем немного).
Конечный пользователь может быть компонентом пользовательского интерфейса, или службой, или чем-то еще ...
Если вы где-то обрабатываете исключение в своем коде - тогда это конечный пользователь, и вы должны зарегистрировать его там. В большинстве приложений и в большинстве случаев он должен регистрироваться пользовательским интерфейсом при отображении сообщения об ошибке для пользователя.