如果服务器返回错误状态,java.net.HttpUrlConnection是否总是抛出IOException?
我正在使用java.net.HttpUrlConnection向我的服务器发出Http请求。 我意识到如果服务器返回错误状态(例如400)。 HttpUrlConnection将抛出与错误状态对应的IOException。
我的问题是: 如果服务器返回错误状态(4xx,5xx),HttpUrlConnection是否总是抛出IOException?
我看一下HttpUrlConnection API描述,但我无法回答我的问题。
更新:请参阅我的测试:
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 } }
谢谢!
如果您在getInputStream()
getResponseCode()
之前检查getResponseCode()
并且问题是HTTP返回代码而不是连接错误,则不会。
- 为什么我的程序在文件存在时捕获/抛出FileNotFoundException?
- 重写方法不会抛出exception
- 使用’if’语句检查后出现空指针exception
- 何时在Java中使用exception(示例)
- 为什么在Linux上使用Java Attach API会失败? (即使maven构建完成)
- Eclipse中exception的断点 – 如何检查Exception对象?
- 带有监听器的JavaFX Textfield给出:“java.lang.IllegalArgumentException:start必须<= the end”
- 无法定义私有静态final变量,因为它会抛出exception
- System.console()在NetBeans中提供NullPointerException