catch IndexOutOfBoundsException异常

时间:2017-11-13 09:53:59

标签: java

我试图在catch块中捕获组成的IndexOutOfBoundsException错误。但每次它返回-1而不进入catch块

我可以知道为什么会发生这种情况吗?我想达到阻止。

  public class Mars {


    public int Setname(String Input) {

        int output = 0;


        try {
            output = Input.indexOf("L");
            System.out.println("Error:" + Input.indexOf("L"));

            if (output == -1){

                throw new IndexOutOfBoundsException();
            }

        }

        catch (IndexOutOfBoundsException e) {

            System.out.println("Error:2" + e.getStackTrace());
        }

        return output;

    }

    public static void main(String[] args) {

        Mars O = new Mars();
        O.Setname("London");

    }

}

第二件事是:当我们在catch块中编写IndexOutOfBoundsException e时,它会创建一个IndexOutOfBoundsException类的实例吗?我是对的吗?

那么为什么我们不能以下面的方式写作呢?这可能是一个非常愚蠢的问题,但仅仅是出于好奇心我想知道。

catch(IndexOutOfBoundsException e = new IndexOutOfBoundsException())

4 个答案:

答案 0 :(得分:1)

String的indexOf()方法返回指定字符第一次出现的字符串中的索引,如果字符未出现,则返回-1。在您的情况下,您的角色不会出现,这就是您获得-1的原因。

所以你应该做的是强制这样的例外:

if(output == -1){
    throw new IndexOutOfBoundsException()
}

答案 1 :(得分:0)

使用if语句并抛出异常

if(output == -1){
    throw new IndexOutOfBoundsException()
}

答案 2 :(得分:0)

String的方法indexOf()不会抛出任何异常。实际上,如果您要查找的char不在String

中,则返回-1

Here你可以检查一下

如果您需要抛出异常,则必须执行Ayo K建议

之类的操作

答案 3 :(得分:0)

对于第一件事Mohamed Said Benmousa的回答是正确的

第二件事

IndexOutOfBoundsException e

这不会创建实例。它只是一个引用,如果抛出则指向IndexOutOfBoundsException对象。就像你在调用方法时传递参数一样。