Java исключения, после catch он все еще печатает, что после - PullRequest
0 голосов
/ 17 ноября 2018

Я использую некоторые исключения, но даже если одно из них выброшено и перехвачено, оно продолжает выводить что после блока catch.

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

Почему-то, когдау меня есть исключение, мое тело улова напечатано, но также и суф после него, которое не должно быть напечатано.

Как мне организовать эти исключения?

------- aметод, который генерирует исключение

   public double getHeight() throws ExceptionCheck {
        //if end point is not set, return -1 (error)
        if(points[1] == null){
            throw new ExceptionCheck("The height cannot be calculated, the end point is missing!\n\n");
        } else {
            double height = points[1].getY() - points[0].getY();
            return height;
        }
    }

------- метод, который обрабатывает бросок из getHeight

@Override
public double getArea() {
    //if end point is not set, return -1 (error)

    double area = 0;

    try {
        area = getHeight() * getWidth();
    }
    catch(ExceptionCheck e){
        System.out.printf("The area cannot be calculated, the end point is missing!\n\n");
    }

    return area;
}

---------- здесьпоследний SOUF после улова не должен быть напечатан, но все равно печатается

private static void printArea(Shape shape) {
    System.out.println("Printing area of a " + shape.getClass().getSimpleName());

    double area = 0d;
    // Get area of the shape and print it.
    try {
        area = shape.getArea();
    }
    catch(ExceptionCheck e){
        System.out.printf(e.getMessage());
    }
   System.out.println("The area is: " + area);
}

1 Ответ

0 голосов
/ 17 ноября 2018

Это не так, как catch работает.Если это не должно быть напечатано, когда есть исключение, вы должны переместить его в тело try.Например,

// Get area of the shape and print it.
try {
    double area = shape.getArea();
    System.out.println("The area is: " + area); // <-- if the previous line throws
                                                // an exception, this will not print.
}
catch(ExceptionCheck e){
    System.out.printf(e.getMessage());
}

Ваш метод getArea на самом деле throw Exception.Это печатает и глотает это.Для вызова вышеуказанного catch вам также необходимо изменить getArea, например

@Override
public double getArea() throws ExceptionCheck {
    try {
        return getHeight() * getWidth();
    }
    catch(ExceptionCheck e){
        System.out.printf("The area cannot be calculated, the end point is missing!\n\n");
        throw e; // <-- add this.
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...