Как отправить несколько исключений в блоке try

Рейтинг: 1Ответов: 2Опубликовано: 10.04.2015

Здравствуйте! Есть блок try в котором должно возникнуть три исключения. Если возникает первое исключение то управление передается в catch и блок try прерывается, как можно вернутся обратно в блок try и выполнить остальную часть кода? Дали задачу в условии следующее: В программе реализовано три метода в которых искусственно возникает исключение. Все три метода должны находится в одном блоке try. В блоке должно возникнуть все три исключения(я не знаю как это сделать) и затем обработчики должны обработать каждое возникшие исключение

try
{
  method1(); //Здесь всегда возникает исключение
  method2(); //Как выполнить этот код?
  method3(); //И этот?
} 
catch(Exception1 e)
{

}
catch(Exception2 e)
{

}
catch(Exception3 e)
{

}

Ответы

▲ 2

Ок, раз вы не хотите чтоб за вас решили - вот вам подсказка:

Существует блок try-finally без cath:

            try {
                method1();
            } finally {
            }

Блок finally выполнится всегда, независимо от того было исключение или нет.

UPD. вариант2

import java.io.IOException;
import java.rmi.RemoteException;

public class Solution {
    public static void main(String[] args) {
        processExceptions(new Solution());

    }

    public static void processExceptions(Solution obj)
    {

        try {
            obj.method1();
            obj.method2();
            obj.method3();
        }

        catch (IOException e){
            System.out.println(e);
        }

        catch (NoSuchFieldException e){
            System.out.println(e);
        }

    }

    public void method1() throws IOException {
        throw new IOException();
    }

    public void method2() throws NoSuchFieldException {
        throw new NoSuchFieldException();
    }

    public void method3() throws RemoteException {
        throw new RemoteException();
    }
}
▲ 2

Можно через рекурсию и выбор метода с 1 блоком try.

private int methodNumber;
public void run(int m) {
    try {
        switch (m) {
            case 0:
                method1();
            case 1:
                method2();
            case 2:
                method3();
        }
    } catch (Exception1 e) {
        System.out.println("Обработка исключения 1");

    } catch (Exception2 e) {
        System.out.println("Обработка исключения 2");

    } catch (Exception3 e) {
        System.out.println("Обработка исключения 3");
    } finally {
        if (methodNumber < METHODS_COUNT) run(++methodNumber);
    }
}