исключение никогда не генерируется при исключительной обработке в Java - PullRequest
0 голосов
/ 26 февраля 2019

Я довольно новичок в программировании на Java и пытаюсь научиться исключительной обработке в Java.В следующем коде я получил ошибку:

незарегистрированное исключение InvalidTestScore;должен быть пойман или объявлен брошенным, бросить новый InvalidTestScore («Неверный результат теста»);

Я пытался выяснить эту проблему, но не смог, потому что он говорит, что должен быть пойман или объявленЯ дал блок catch, который исключает тот же аргумент исключения, который выдается.

import java.io.*;
import java.util.*;

class InvalidTestScore extends Exception {
public InvalidTestScore(String msg) {
  super(msg);
}

public class TestClass {

  public static void inTestScore(int[] arr) {
    int sum = 0, flag = 0;
    for (int i = 0; i < arr.length; i++) {
      if (arr[i] < 0 || arr[i] > 100) {
        flag = 1;
        break;
      } else {
        sum += arr[i];
      }
    }

    if (flag == 1) {
      throw new InvalidTestScore("Invalid Test Score");
    } else {
      System.out.println(sum / arr.length);
    }
  }

  public static void main(String[] args) {
    int n;
    Scanner input = new Scanner(System.in);
    n = input.nextInt();
    int[] arr = new int[n];
    for (int i = 0; i < n; i++) {
      arr[i] = input.nextInt();
    }

    try {
      inTestScore(arr);
    } catch (InvalidTestScore e) {
      System.out.println(e);
    }
  }
}

Ответы [ 2 ]

0 голосов
/ 26 февраля 2019

Вы делаете

throw new InvalidTestScore("Invalid Test Score"); 

, поэтому вы должны объявить, что ваш метод на самом деле выдает это исключение

public static void inTestScore(int[] arr) throws InvalidTestScore
0 голосов
/ 26 февраля 2019

Вы должны объявить, что ваш метод может выдать это исключение:

public static void inTestScore(int[] arr) throws InvalidTestScore {
    ...
}

Это позволяет компилятору принудительно заставить любой метод, который вызывает ваш метод, перехватить это исключение или объявить, что он может вызвать его.

...