Приведу следующий пример с массива.
Прежде всего я создаю интерфейс с следующими параметрами..
public interface ShowAllExcemption <T, E extends Exception, F extends Exception> {
public void AddMemeber (T arg) throws E;
public void ShowMember () throws F;
}
После чего создаю абстрактный класс-родитель, которые будет выдавать сообщения при исключениях
public abstract class Message extends Exception {
public abstract String toString ();
}
И два класса наследника, которые будут выдавать сообщения при переполнении массива и ... выход за ноль массива.
public class ArrIsFull extends Message {
public String toString() {
return "Array is full!";
}
}
public class ArrIsEmpty extends Message{
public String toString() {
return "Array is empty!";
}
}
Обрабатываемый класс, который будет содержать тот самый массив.
public class ArrClass implements ShowAllExcemption <Integer, ArrIsFull, ArrIsEmpty>{
private int [] arr = new int [10];
private int count = 0;
public void AddMemeber(Integer arg) throws ArrIsFull {
if (count > arr.length)
throw new ArrIsFull();
else
arr[count++] = arg;
}
public void ShowMember() throws ArrIsEmpty {
if (count == 0)
throw new ArrIsEmpty();
else
System.out.println(arr[count--]);
}
}
И собственно точку входа в программу, но проблема в том, что он выдает только одно исключение, а до второго не доходит. Как сделать так, что при первом исключении программа пропускала часть кода и после чего переходило ко следующей части программы?
import java.util.*;
public class MainClass {
public static void main(String[] args) {
ArrClass arr = new ArrClass ();
Random rand = new Random ();
try{
for (int i=0; i!=7; i++)
arr.AddMemeber(rand.nextInt(10));
} catch (Message e){
System.out.println(e);
}
try{
for (int i=0; i!=8; i++)
arr.ShowMember();
} catch (Message e){
System.out.println(e);
}
}
}