Ловля Исключения и Повторное выбрасывание

Обновить

November 2018

Просмотры

219 раз

3

Я новичок на сцене Java, но в настоящее время работает на назначенную оценки. Я интересно, если есть способ, чтобы поймать исключение внутри функции класса и бросить еще одно исключения, так что функция, которая называется функция класса не нужно знать о первом брошенном исключении.

Например

public void foo() throws MasterException {
    try {
        int a = bar();
    } catch (MasterException e) {
        //do stuff
    }
}

public void bar() throws MasterException, MinorException {
    try {
        int a = 1;
    } catch (MinorException e) {
        throw new MasterException();
    }
}

Я надеюсь , что этот пример объясняет то , что я пытаюсь добиться. В основном я хочу , чтобы функция , вызывающая не знать о MinorException.

5 ответы

0
  1. Удалить throws MasterException из объявления методы foo(), причина ясна , что MasterException был готов пойманной SO бы не получить место в любом случае.

  2. Удалить , MinorExceptionиз объявления методы bar().

C.c
1

Абсолютно. Вы хотите изменить эту строку:

public void bar() throws MasterException, MinorException

к этому:

public void bar() throws MasterException

Все остальное должно работать точно так, как вы написали это.

3

Удалить , MinorExceptionиз декларации , barи вы сделали. Я также хотел бы сделать:

throw new MasterException(e);

Если MasterExceptionбыл конструктор , который поддерживал его (ее стандарт это делает, то Exceptionкласс делать).

1

Просто удалите MinorException от броска пункта бара ().

0

Я хотел бы удалить MasterException из Foo (), как вы поймать его и, как говорят другие ответы, MinorException из бара ().

Кроме того, в случае MasterException или MinorException подкласс RuntimeException, вы не должны объявить. См , например , http://docs.oracle.com/javase/tutorial/essential/exceptions/runtime.html

Связанные вопросы