Вы уже используете spring mvc (см. Трассировку стека, содержащую классы spring mvc)
Если это так, вероятно, лучшим вариантом будет перехват исключения на уровне Contoller Advice или любой другой механизм обработки исключений , поддерживаемый spring MVC.
Обычно трассировка стека печатается самим механизмом spring mvc, только если никто (контроллер, совет или, возможно, служба)
Однако с точки зрения angular исключений не существует. Вместо этого вы получаете статус не 200 с некоторым значением по умолчанию JSON, это ответ в формате HTTP, а не исключение, а просто ответ определенного типа c. Поэтому я считаю, что лучше всего было бы установить sh какой-то протокол для сообщений, которые приходят на клиентскую сторону, и ясно, что трассировка стека сервера не является чем-то, что нужно отправлять клиенту.
Это своего рода соглашение которые могут включать:
- статус HTTP (не 200, чтобы различать ошибки и обычные ответы)
- сообщение JSON в предопределенном формате с:
- Идентификатор исключения
- Время на сервере
- Сообщение
- Параметры, которые будут отображаться на клиенте
- Информация, связанная с I18n, если она актуальна для вашего приложения.
Вкратце:
- Вы создаете совет контроллера и сопоставляете там настраиваемое исключение
- Метод сопоставления создаст «протокол» json и вернет это в angular.
- Этот метод сопоставления будет вызываться Spring автоматически, если никто раньше не поймал исключение.
- Так как метод сопоставления будет обрабатывать исключение, он не будет быть напечатанным на консоли сервера, чего вы и пытаетесь достичь.
- Клиент получит json и создаст некоторый "инфраструктурный" код в angular, который обрабатывает все сообщения (возможно, показывает сообщение в верхней части экрана, все всплывающее).