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

标签 java android

我有一个函数可以获取某个网站的 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/

相关文章:

java - NullPointerException .. 我的逻辑缺陷在哪里?

支持快速删除任意节点的Java链表?

android - Listview 分隔边距

java - Android从常量xml读取值

java正则表达式,仅当不在引号或括号中时才以逗号分隔

java - 简单的java挑战的复杂思维,我该如何解决它?

Java - 如何让类 1 和类 2 互相了解?

android - AchartEngine 中的圆环图半径

android - 在 ScrollView 的父级中未检测到水平滑动

android - Android 中的全屏 DialogFragment(通过 ActionBar)