在Java中创建用户定义的错误;为什么这段代码不起作用?

时间:2016-09-30 04:47:14

标签: java exception-handling

import java.util.*;
class ArrayOverflowException extends Exception{
    ArrayOverflowException(){
        super(); 
    }
    static int i;
    static void check(int i) throws ArrayOverflowException{
        if (i>5) {
            throw new ArrayOverflowException("Array Overflow");
        return;
}
}
public static void main(String[] args) {
    Scanner input=new Scanner(System.in);
    int a[]=new int[5];
    System.out.println("Enter the elemets of the array. #MAX 6 ELEMENTS#");
    try{
        for (int i=0;i<10;i++) {
            ArrayOverflowException.check(i);
            a[i]=input.nextInt();
        }
    }catch (ArrayOverflowException e) {
        System.out.println("Exception handled"+e);
    }
}
}

我一直在尝试在Java中创建自己的用户定义的异常,它会产生错误cannot find symbol in line 9。请帮忙。

  

第9行抛出新的ArrayOverflowException(“Array Overflow”);

2 个答案:

答案 0 :(得分:2)

1)使用字符串参数

添加构造函数
ArrayOverflowException(String message){
    super(message); 
}

2)删除return,它是无法访问的代码

return;

还要检查是否要检查i或用户输入的值?

答案 1 :(得分:1)

这里有两个问题:

  1. 您需要创建一个接受String参数的构造函数:

    ArrayOverflowException(String message) {
        super(message);
    }
    
  2. return之后你不能throw,因为它会立即跳转到最近的catch块,在这种情况下,它不在方法之内。