当前位置: 首页 > 知识库问答 >
问题:

我收到一个错误:无法抛出ArrayIndexOutOfBoundsException类型的异常;异常类型必须是类Throwable的子类型

冉子石
2023-03-14
import java.util.*;

public class ArrayIndexOutOfBoundsException {
    public static void main(String[] args) {
        int[] array = new int[100];  

//为(int i=0; i创建具有100个存储空间的数组

        Scanner input = new Scanner(System.in);
        System.out.println("Enter the index of the array: "); 

//提示用户输入要查找的索引

        try {
            int index = input.nextInt(); //declaring index variable to take on inputed value
            System.out.println("The integer at index "+index+" is: "+array[index]); //printing the integer at the specified index
        
        }
        catch (ArrayIndexOutOfBoundsException ex) { //if user enters index value outside of 0-99, exception message will print
            System.out.println("Out of bounds.");
        }

        
    } 
        
}

共有2个答案

程仲卿
2023-03-14

ArrayIndexOutOfBoundsException异常类型包含在java/lang包中。因此,您必须导入它或在catch子句中使用全名:

catch(java.lang.ArrayIndexOutOfBoundsException ex)

在您的情况下,导入将不起作用,因为您的类也称为ArrayIndexOutOfBoundsException,所以您需要在catch子句中使用全名。

作为最后的建议,我建议您将类重命名为良好的实践,因为现在这样做可能会导致混淆并使代码难以阅读。

西门飞星
2023-03-14

当您的代码被编译为字节码时,编译器必须发现所有类并将所有名称扩展到它们的FQDNs包类名中

在您的情况下,编译程序时,主类名为ArrayIndexOutOfBoundsException,因此编译器会将ArrayIndexOutOfBoundsException映射到您自己的类。

当编译器捕捉到这一行时,它会接受ArrayIndexOutOfBoundsException,并尝试首先在映射中找到它——它就在那里。因此编译器开始检查正确性,尤其是类必须处于可丢弃的层次结构中。由于它不在throwable层次结构中(您的类隐式扩展了对象),编译器将返回一个错误。

您可以使用两种方法修复它:

  1. 重命名main类以避免歧义
  2. 在catch中,您可以指定类的全名:java。lang.ArrayIndexOutOfBoundsException

第二个选项有助于解决一个泛型问题:如果两个类具有相同的名称,但必须在相同的范围内使用该怎么办。

 类似资料:
  • 我是jUnit和mockito的新手。对于虚空的嘲弄是如何发挥作用的,我完全感到困惑。在这里,如果名称是“hello”,则函数抛出一个异常。但当我测试它时,它并没有抛出异常... 测试 }

  • 问题内容: 我在使用jre1.8.0_66运行的代码中遇到了这个奇怪的异常: 什么意思 代码如下: 如果我更改为,异常会消失。 这样做的价值: 如果我从任一类中删除,该异常也将消失。但是如果我在两个类中都添加了另一个等效的接口(例如,或某些自定义接口),则会返回。 问题答案: 每当涉及交集类型并且您使用的方法引用使用的接收器类型不是第一个(第一个类型是在类型擦除之后将保留的类型)时,都会发生此问题

  • 问题内容: 我在项目中使用Gson将JSON字符串反序列化为Java对象。如果我提出请求,我希望服务器发出明确定义的响应。服务器将返回我期望的定义明确的响应,或者将返回一个(也定义为)错误对象。 讲清楚一点:假设我有一个简单的对象,像这样: 和这样的错误对象: 如果我收到类似的服务器响应 一切都按预期进行。 但是如果回应是这样的 我会得到一个对象,那里是和是0!Gson文档(来自Json)明确指出

  • 我在我的项目中使用Gson。但它返回给我错误 我得到一个服务器响应,如下所示 我有一个错误,需要一个字符串,但是BEGIN_OBJECT 我应该如何处理这个异常?? 我没有访问数据库的权限,因为我使用API

  • 我试图显示用户图像URL在CircleAvatar();它显示一个空错误,即使我已经提供了它。还是我做错了? 首先,我调用Auth方法和设置图像字符串img, 然后在initstate中实例化 然后把它放在抽屉里()

  • 我对getruangfasiliti方法有问题。有没有办法修复这个错误?我已经为此工作了好几个星期了。 尝试这个,但它不是我想要的。我要得到这个物体的所有数据 下面是我的代码以及如何修复错误。我不知道我的错在哪里 模型Aduan.dart 阿杜安。飞奔 这是我的错误