java - BufferedReader 初始化挂起?

标签 java url tcp wikipedia

我正在尝试从网络(更具体地说是维基百科)读取内容,但只要它是一个不存在的维基页面(即 http://en.wikipedia.org/wiki/Asdfasdfasdfasdf ),我的 BufferedReader 就会在初始化时挂起。我已经将它缩小到 init 而不是我觉得很奇怪的 readLine() 。我的代码如下:

URL url = new URL("http://en.wikipedia.org/wiki/" + query.replace(" ", "_"));
URLConnection connection = url.openConnection();
BufferedReader wikiReader = new BufferedReader(new InputStreamReader(connection.getInputStream()));

wikiReader 初始化之后的任何代码都不会执行,但这不是现有 wiki 页面的问题...任何帮助将不胜感激。

最佳答案

我强烈怀疑它没有挂起 - 它只是在您不注意的情况下抛出异常。我预计它会抛出 FileNotFoundException,这是我尝试时发生的情况。

它发生在 readLine() 之前,因为 getInputStream() 将发出 HTTP 请求,但失败了。它永远不会达到 BufferedReader 构造函数本身的程度 - 如果将代码更改为:

InputStream inputStream = connection.getInputStream();
// You won't get to here whne the page doesn't exist
BufferedReader wikiReader = new BufferedReader(new InputStreamReader(inputStream));

基本上,您需要查看您在堆栈中的哪个位置捕获了异常……并确保它是合适的。首先,您应该确保您正在记录异常,然后计算出您之后想要做什么……这在很大程度上取决于您的应用程序做什么。

关于java - BufferedReader 初始化挂起?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27656462/

相关文章:

c# - 我可以在 C# 中使用 C header 作为协议(protocol)吗

java - Eclipse-PMD 全局配置规则集

java - URL代码求助请短代码(新手Java程序员)

url - URL 片段或查询中是否允许使用斜杠?

tcp - 从移动设备到 Azure 的 UDP

python - 通过 Pi 与 python 之间的套接字通信 (TCP/IP) 发送传感器数据

java - 如何在websphere commerce bean中获取Url参数?

java - 即使在使用 setLineWrap(true) 和 setWrapStyleWord(true) 时,JTextArea 宽度也会随着输入而拉伸(stretch)

java - 有效标记结果

django - django 中漂亮且 seo 友好的 url