Привет, сообщество StackOverflow,
Я пытаюсь написать код, который генерирует и ловит несколько исключений, которые я сделал.
В чем может быть проблема?
Я хочу получить этот вывод:
Doing risky
Boi
Fooi
Fooi
Fooi
FINAAAL WIN
Основной класс выглядит так:
public class Dorisk {
public static void main(String[] args) {
Dorisk dora = new Dorisk();
try {
dora.Dorisky(1);
}catch(BoinkException bo){
System.out.println("Boi");
}catch(FooException fo){
System.out.println("Fooi");
}catch(BazException ba){
System.out.println("Baaai");
}finally{
System.out.println("FINAAAL WIN");
}
}
public void Dorisky(int x)throws BazException{
while( x < 5 ){
System.out.println("Doing risky");
if(x ==1){
throw new BoinkException();
}
if(x ==2){
throw new BiffException();
}
if(x ==3){
throw new BarException();
}
if(x ==4){
throw new FooException();
}
x++;
}
}
}
И исключения:
public class BazException extends Exception{
public BazException(){
System.out.println("Baz baja");
}
}
public class FooException extends BazException{
public FooException(){
System.out.println("Foo baja");
}
}
public class BarException extends FooException{
public BarException(){
System.out.println("Bar baja");
}
}
public class BiffException extends FooException{
public BiffException(){
System.out.println("Biff baja");
}
}
public class BoinkException extends BiffException{
public BoinkException(){
System.out.println("Boink baja");
}
}
НО, что я получаю:
Doing risky
Baz baja
Foo baja
Biff baja
Boink baja
Boi
FINAAAL WIN
Что говорит мне, что выбрасывается только первое Исключение в методе doRisky, но почему?
Спасибо за ответы!
Редактировать: Я получил это сейчас! Первое выброшенное Исключение напечатало все другие сообщения, потому что они были объявлены в конструкторе суперклассов Исключения, и они должны быть сконструированы, чтобы подкласс мог работать.