Перехват исключения CharConversionException в Spring Boot - PullRequest
0 голосов
/ 08 июля 2020

В моем приложении используется типичный процесс аутентификации JWT. Я могу отловить большинство ошибок токена, но когда пользователь отправляет неверный токен-носитель (например, ads.asd.d), выдается CharConversionException.

java.io.CharConversionException: Not an ISO 8859-1 character: [�]

Проблема в том, что я могу не пойму. Я получаю эту ошибку.

exception java.io.CharConversionException is never thrown in body of corresponding try statement

Класс фильтра:

public class JwtRequestFilter extends OncePerRequestFilter {

    @Autowired
    private MyUserDetailsService userDetailsService;

    @Autowired
    private JwtUtil jwtUtil;

    @Override
    protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain chain) throws ServletException, IOException, MalformedJwtException, CharConversionException {

        final String authorizationHeader = request.getHeader("Authorization");

        String username = null;
        String jwt = null;

        try {
            if (authorizationHeader != null && authorizationHeader.startsWith("Bearer ")) {
                jwt = authorizationHeader.substring(7);
                username = jwtUtil.extractUsername(jwt);
            }
        } catch (MalformedJwtException e) {
            response.setStatus(HttpServletResponse.SC_UNAUTHORIZED);
            return;
        } catch (CharConversionException e) {
            response.setStatus(HttpServletResponse.SC_UNAUTHORIZED);
            return;
        }

        ...

        chain.doFilter(request, response);
    }

Есть идеи, как я могу поймать это исключение?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...