¿Java.net.HttpUrlConnection siempre arroja IOException si el servidor devuelve un estado de error?

estoy usandojava.net.HttpUrlConnection hacer una solicitud Http a mi servidor. Me di cuenta de que si el servidor devuelve un estado de error (400 por ejemplo). HttpUrlConnection arrojará una IOException correspondiente al estado de error.

Mi pregunta es:¿HttpUrlConnection siempre arroja una IOException si el servidor devuelve un estado de error (4xx, 5xx)?

Echo un vistazo aHttpUrlConnection Descripción de la API pero no pude responder mi pregunta.

Actualizado: Por favor vea mi prueba:

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
    }
}

¡Gracias!

Respuestas a la pregunta(1)

Su respuesta a la pregunta