2011-02-07 3 views
0

Как вы пишете собственный собственный класс исключений.Невозможно найти символ, как вы пишете свой собственный класс исключений

Я пытаюсь написать свой собственный класс исключений, который вызывает 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); 
     } 

} 
+0

Почему так много места между строками? Намного легче читать, если сгущаться (то же самое я говорю для диссертаций, но они заставляют нас делать двойные интервалы). –

+0

Возможный дубликат [Как я могу написать Исключение самостоятельно?] (Http://stackoverflow.com/questions/1070590/how-can-i-write-an-exception-by-myself) – fglez

ответ

1

Вы просто расширяете класс Exception. Пример:

class InvalidTestScore extends Exception { 
} 

Кроме того, вот несколько полезных конструкторов, которые я обычно реализую.

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

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

Вот официальная трасса на обработку исключений: The Java Tutorials: Lesson: Exceptions

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).

+0

Когда я добавляю это к мой код я получаю сообщение об ошибке. – user599272

+0

Какая ошибка? Где вы его добавляете? –

+0

открытый класс InvalidTestScoreException extends Exception { public InvalidTestScoreException() { super ("Недопустимый счет теста"); } public InvalidTestScoreException (String message) { super (message); } общественный InvalidTestScore (Throwable throwable) { super (throwable); } } – user599272

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