找不到符号,你如何编写自定义异常类

时间:2011-02-07 22:01:40

标签: java arrays class exception user-interface

如何编写自己的自定义异常类。

我正在尝试编写自己的异常类,抛出InvalidTestScore。

// george beazer
import java.util.Scanner;

public class TestScores{
    public static void main(String[]args){
                int numTests = 0;
                double[] grade = new double[numTests];
                double totGrades = 0;
                double average;   

                Scanner keyboard = new Scanner(System.in);
                System.out.print("How many tests do you have? ");

                numTests = keyboard.nextInt();
                grade = new double[(int) numTests];

                for (int index = 0; index < grade.length; index++){
                        System.out.print("Enter grade for Test " + (index + 1) + ": ");
                        grade[index] = keyboard.nextDouble();        

                        if (grade[index] < 0 || grade[index]> 100){
                                try {
                                  throw new InvalidTestScore();

                                } catch (InvalidTestScore e) 
                                {

                                    e.printStackTrace();

                                }
                        }
                }


                for (int index = 0; index < grade.length; index++){
                        totGrades += grade[index];
                }

                average = totGrades/grade.length;
                System.out.print("The average is: " + average);
        }

}

3 个答案:

答案 0 :(得分:2)

只需展开Exception

public class InvalidTestScoreException extends Exception {

   public InvalidTestScoreException() {
      super("Invalid test score");
   }

   public InvalidTestScoreException(String message) {
      super(message);
   }

   public InvalidTestScoreException(Throwable throwable) {
      super(throwable);
   }
}

另一方面,检查异常最初非常有吸引力。但你应该避免不必要的使用。检查异常用于强制程序员处理异常条件(这使得代码更可靠,因为异常条件不能被忽略)。

此外,当条件可恢复时,将使用已检查的异常。这意味着当您使用已检查的异常时,可以合理地假设程序员可以从此异常中恢复。

使用运行时异常来指示编程错误。例如,如果违反了方法的前提条件,则可以使用IllegalArgumentException。考虑到您的示例,此异常可能更有意义。

如果您可以使用适当的标准异常来代替已检查的异常,请执行此操作,而不是创建模仿现有功能(DRY)的新异常。

答案 1 :(得分:2)

class MyCustomException extends Exception
{
    public MyCustomException(String message)
    {
        super(message);
    }
}

答案 2 :(得分:1)

您只需扩展Exception类。像这样:

class InvalidTestScore extends Exception {
}

此外,这里有一些我经常实现的有用的构造函数。

    public InvalidTestScore(String msg) {
        super(msg);
    }

    public InvalidTestScore(Throwable cause) {
        super(cause);
    }

以下是关于异常处理的官方跟踪:The Java Tutorials: Lesson: Exceptions