Oi Arthur!
Como a exception foi lançada dentro do Filter, acaba que ela não será capturada pelo tratador de erros.
Você pode alterar o código do filter para fazer o tratamento:
try {
var tokenJWT = recuperarToken(request);
if (tokenJWT != null) {
var subject = tokenService.getSubject(tokenJWT);
var usuario = repository.findByLogin(subject);
var authentication = new UsernamePasswordAuthenticationToken(usuario, null, usuario.getAuthorities());
SecurityContextHolder.getContext().setAuthentication(authentication);
}
filterChain.doFilter(request, response);
} catch (Exception ex) {
response.setStatus(HttpServletResponse.SC_FORBIDDEN);
response.setCharacterEncoding("UTF-8");
response.getWriter().println(ex.getLocalizedMessage());
}