O java.net.HttpUrlConnection sempre lança IOException se houver um retorno de status de erro pelo servidor?

estou usandojava.net.HttpUrlConnection para fazer uma solicitação HTTP ao meu servidor. Percebi que, se o servidor retornar um status de erro (400 por exemplo). HttpUrlConnection lançará uma IOException correspondente ao status do erro.

Minha pergunta é:O HttpUrlConnection sempre gera uma IOException se o servidor retornar um status de erro (4xx, 5xx)?

Eu dou uma olhadaHttpUrlConnection Descrição da API, mas não consegui responder à minha pergunta.

Atualizado: veja meu teste:

public static void main(String[] args) {
    try {

        String url = "https://www.googleapis.com/oauth2/v3/userinfo?access_token=___fake_token";
        HttpURLConnection conn = (HttpURLConnection)new URL(url).openConnection();

        conn.getResponseCode();
        conn.getInputStream();

    } catch (Exception ex) {
        ex.printStackTrace();
        // Print IOException: java.io.IOException: Server returned HTTP response code: 401 for URL: https://www.googleapis.com/oauth2/v3/userinfo?access_token=abc

        // If I commented conn.getResponseCode() -> The same IOException
    }
}

Obrigado!

questionAnswers(1)

yourAnswerToTheQuestion