【问题标题】:Can't make my own custom exception. Please help me无法制作我自己的自定义异常。请帮我
【发布时间】:2011-06-23 02:20:12
【问题描述】:

当我尝试使用 InvalidTestScore 异常创建 catch 语句时,java 不允许我这样做。但是,当我使用 IllegalArgumentException 时,java 确实允许我做到。

// George Beazer

public class TestScores2 {
    public TestScores2(int[] arg) {
        System.out.println(average(arg));
    }
    public int average(int[]arg)
    {
        int temp=0;
        for (int i = 0; i < arg.length; i++) {
            if(arg[i]<0 || arg[i]>100)
            {
                IllegalArgumentException e = new IllegalArgumentException();
                throw e;
            }
            else
            {
                temp+=arg[i];
            }
        }
        return temp/arg.length;
    }
    public static void main(String[] args) {
        int []ar={4,78,33,89};
        TestScores2 ts=new TestScores2(ar);
    }

}

运行良好

但是如果我运行

public class TestScores2 {
    public TestScores2(int[] arg) {
        System.out.println(average(arg));
    }
    public int average(int[]arg)
    {
        int temp=0;
        for (int i = 0; i < arg.length; i++) {
            if(arg[i]<0 || arg[i]>100)
            {
                InvalidTestScoreException e = new InvalidTestScore();
                throw e;
            }
            else
            {
                temp+=arg[i];
            }
        }
        return temp/arg.length;
    }
    public static void main(String[] args) {
        int []ar={4,78,33,89};
        TestScores2 ts=new TestScores2(ar);
    }

}

我找不到符号。制作您自己的自定义异常需要什么。

【问题讨论】:

  • 为什么你认为java应该知道“InvalidTestScoreException”是什么?编程不是魔术。您必须创建一个“InvalidTestScoreException”类。

标签: java arrays compiler-construction error-handling


【解决方案1】:
InvalidTestScoreException e = new InvalidTestScore();

???不应该是这样吗:

InvalidTestScoreException e = new InvalidTestScoreException();

【讨论】:

    【解决方案2】:

    正如@Falmarri 指出的,您需要声明一个 InvalidTestScoreException 类

    以下是修改后的版本:

    public class TestScores2 {
    
        public class InvalidTestScoreException extends RuntimeException {
            //Constructors go here
        }
    
        public TestScores2(int[] arg) {
            System.out.println(average(arg));
        }
        public int average(int[]arg)
        {
            int temp=0;
            for (int i = 0; i < arg.length; i++) {
                if(arg[i]<0 || arg[i]>100)
                {
                    InvalidTestScoreException e = new InvalidTestScoreException();
                    throw e;
                }
                else
                {
                    temp+=arg[i];
                }
            }
            return temp/arg.length;
        }
        public static void main(String[] args) {
            int []ar={4,78,33,89};
            TestScores2 ts=new TestScores2(ar);
        }
    
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-09-01
      • 2017-08-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-21
      • 1970-01-01
      相关资源
      最近更新 更多