Как прекратить выполнение вызовов метода, если текущий вызов метода приходит с исключением - PullRequest
1 голос
/ 02 мая 2020

Из моего основного JAVA класса я вызываю несколько других вызовов методов в другом классе, в котором любой из этих вызовов метода может вызвать исключение. Мне нужно знать простейший способ программирования, чтобы прекратить выполнение остальных вызовов метода, распечатать сообщение об ошибке и продолжить следующую итерацию в for l oop, если текущий вызов метода возникнет с исключением.

Скажите, что мои методы определены в классе - testConnection

Методы обозначены как A, B, C, D, E, F в классе testConnection

Скажите, что мой главный Класс, вызывающий эти методы, как показано ниже.

for (int i =0; i<=5; i++) {
    testConnection.A();
    testConnection.B();
    testConnection.C();
    testConnection.D();
    testConnection.E();
    testConnection.F();    
}

Например, если вызов метода B приводит к исключению, мне нужно остановить остальные методы, выполняющие (C, D, E и F), напечатайте сообщение об ошибке и вернитесь к for l oop и продолжите следующую итерацию

Ответы [ 3 ]

0 голосов
/ 02 мая 2020

Если какой-либо из ваших методов выдает исключение, элемент управления немедленно сработает, если вы специально не обработали исключение. Поэтому, если метод B сгенерировал исключение в методе, он прекратит выполнение последующих методов. Вы можете перехватить исключительную ситуацию в родительском методе для изящной обработки.

В вашем примере вы можете сделать следующее: -

try {
    for (int i =0; i<=5; i++) {
     testConnection.A();
     testConnection.B();
     testConnection.C();
     testConnection.D();
     testConnection.E();
     testConnection.F();    
     }
}catch (Exception e){
System.out.println("Execution stopped mid way due to some error");
}

Предположим, что метод B выдал какое-то исключение.

0 голосов
/ 02 мая 2020

Вы должны сохранить свой код (вызов метода) в блоке try и обработать его в блоке catch. Вот так.

for (int i =0; i<=5; i++) {
try{
testConnection.A();
            testConnection.B();
            testConnection.C();
            testConnection.D();
            testConnection.E();
            testConnection.F();    
        }catch(Exception e){
             System.out.println(e.printStackTrace());
        }
0 голосов
/ 02 мая 2020

Добавьте try / catch внутри l oop, это отменит любые другие вызовы метода в той же итерации, но все еще продолжит l oop

for (int i = 0; I <= 5; i++) {
    try {
        testConnection.A();
        testConnection.B();
        testConnection.C();
        testConnection.D();
        testConnection.E();
        testConnection.F();    
    catch (Exception e) {
        System.out.println(e.getMessage());
    }
} 
...