gpt4 book ai didi

java - 将一个数组分配给另一个数组时抛出异常

转载 作者:行者123 更新时间:2023-12-01 07:39:17 25 4
gpt4 key购买 nike

我有一个函数可以获取某个网站的 HTML 代码。最终该函数将以数组的形式返回整个页面。我试图将页面保存在另一个数组中,但由于某种原因它总是会抛出异常(ArrayIndexOutOfBoundsException)。

我不确定我是否只是错过了一些基本的东西,或者是否不仅仅如此。给你一些我的代码:

  protected String[] doInBackground(String... login)
{
String[] page = new String[1024];
try {
page = executeHttpGet(); //THIS IS WHERE IT FAILS
} catch (Exception e) {
page[0] = "Error";
}
return page;
}

public String[] executeHttpGet() throws Exception {
URL u;
InputStream is = null;
DataInputStream dis;
String s;
int i = 0;
String[] page = new String[1024];
addSecurityException();
Authenticator.setDefault(new MyAuthenticator(activity));
try {
u = new URL("https://myurl.com");
is = u.openStream();
dis = new DataInputStream(new BufferedInputStream(is));
while ((s = dis.readLine()) != null) {
if (s.toString().length() > 10)
{
page[i] = s.toString();
i++;
}
}
} catch (IOException ioe) {

}
finally {
try {
is.close();
} catch (IOException ioe) {

}
}
return page;
}
}

有人知道为什么我无法将返回的数组分配给 doInBackground() 中的数组吗?帮助将不胜感激。

最佳答案

  1. 您的 catch block 是空的,这是一个糟糕的想法,因为当出现问题时您将没有得到任何信息。
  2. 当您在下面两行重新分配它时,您不需要在其声明中初始化 page (您必须将 catch block 更改为创建一个新数组,'不过)。
  3. 您是否检查过您的网址返回的行数不超过 1024 行?
  4. sString 时,不需要 s.toString(),因为它只会返回 s
  5. 分析异常时,您应该查看整个堆栈跟踪以找出问题发生的具体位置。
  6. 询问异常时,您应该发布整个堆栈跟踪!

当元素数量未指定时,List 是比数组更灵活、更易于使用的替代方案。一般来说,数组是相当低级的,几乎没有理由直接使用它们(它们对于构建 List 实现非常有用)。

关于java - 将一个数组分配给另一个数组时抛出异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7241925/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com