Я реализую приложение с Angular 7
и Spring Boot
. Я использую HttpClientErrorException
, чтобы вернуть своему клиенту ответы об ошибках. Ниже приведен пример ошибки аутентификации (Unauthorized 401
):
public User authenticate(User user) {
// find existing user from database by username or email
User existingUser = repository.findByUsername(user.getUsername());
existingUser = existingUser == null ? repository.findByEmail(user.getUsername()) : existingUser;
if (existingUser == null) {
throw new HttpClientErrorException(HttpStatus.UNAUTHORIZED, "User with given username/email does not exist");
}
// validate password
String rawPassword = user.getPassword();
boolean success = passwordEncoder.matches(rawPassword, existingUser.getPassword());
if (!success) {
throw new HttpClientErrorException(HttpStatus.UNAUTHORIZED, "Given password does not match");
}
return existingUser;
}
Когда клиент дает несуществующее имя пользователя, я получаю сообщение HttpClientErrorException
в журналах моего сервера, например:
![enter image description here](https://i.stack.imgur.com/QGMyJ.png)
Я ожидаю, что это исключение будет обработано, и вместо этого отправлю клиенту сообщение об ошибке с кодом HTTP. На стороне клиента вместо этого я получаю generi c Internal Server Error (500)
![enter image description here](https://i.stack.imgur.com/bXAQ5.png)
Как я могу обрабатывать все HttpClientErrorException
исключения и отправлять их клиент в качестве ответов об ошибке?