【问题标题】:How to tell what type of Java error you're getting in Eclipse如何判断您在 Eclipse 中遇到的 Java 错误类型
【发布时间】:2017-04-02 01:58:38
【问题描述】:

因此,正如之前在另一篇文章中所述,我目前正在学校学习 Java 课程。我正在使用 eclipse,但我正在尝试了解我在控制台中遇到的错误之间的区别。我不相信它告诉我我遇到了什么错误。那么,区分差异的最佳方法是什么?

这是我的代码,我知道它失败了,我知道它为什么失败,“数组中没有数据”我只是不知道我遇到了什么类型的错误。

int[][] a = {{5,2,8,4},{}};
System.out.println(a[1][2]);

我遇到的错误

Exception in thread "main" 123
java.lang.ArrayIndexOutOfBoundsException: 2
at test.main(test.java:82)

我很抱歉之前没有说清楚。我需要了解编译错误、运行时错误、逻辑错误和语法错误之间的区别。这属于哪个类别?

【问题讨论】:

  • 您的问题不清楚,ArrayIndexOutOfBoundsException 没有告诉您您遇到了什么类型的错误吗?
  • 'java.lang.ArrayIndexOutOfBoundsException' 是错误类型。
  • 我想我的问题还不清楚。抱歉,基本上,如果是逻辑错误、编译错误、运行时错误或语法错误,我怎么知道。
  • @RichTalcik :逻辑错误表示程序背后的逻辑不好。编译错误意味着在编译程序时(运行之前)发生了错误。运行时错误是指程序运行时发生的错误,语法错误就像编程的“拼写”错误。至于你的错误类型,我建议你弄清楚

标签: java eclipse error-handling


【解决方案1】:

在 Java 中,数组索引从 0 开始。二维数组在 a[1] 处没有一行。因此,由于a[1] 处的数组长度为 0,因此您将越界。在运行时,当您尝试访问 a[1][2] 时,它超出了界限,因此 JVM 会抛出 ArrayIndexOutOfBoundsException

您可以尝试将元素添加到初始数组:

int[][] a = {{5,2,8,4},{1, 2, 3, 4}};

【讨论】:

    【解决方案2】:

    您将收到ArrayOutOfBoundsException。数组a[1] 是空的,因此当您尝试从位置2 读取时,Java 会抱怨,因为引用的内存位置超出了数组a[1] 的范围。

    这是 Java 的一个语言安全特性,可以防止你做危险的事情。在像 C 这样没有默认 ArrayOutOfBoundsException 的语言中,访问数组边界之外的内存位置有时会导致分段违规,从而导致程序崩溃,即使没有发生这种情况,它通常也会返回随机数据并且应该被认为是一个错误。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-22
      • 2019-10-07
      相关资源
      最近更新 更多