Предположим, вы создали исключение ниже. Что делать, если вы хотите перехватывать оба исключения и обрабатывать их.
public void foo1() throws WrongATMCardException, WrongATMPinException {}
public void foo2(){
try{
// do stuff..
}catch(WrongATMCardException ex){
foo3();
}catch(WrongATMPinException ex){
foo3();
}
}
public void foo3(){
System.out.println("ATM login failed. Throwing authentication failed exception");
// throw NO exception handles both. ???
}
Но если вы объявляете исключения, как указано выше, вы можете обрабатывать как исключения с помощью throwing ATMAuthException
, так и обрабатывать, легко выдает исключения.
public void foo1() throws WrongATMCardException, WrongATMPinException {}
public void foo2(){
try{
// do stuff..
}catch(ATMException ex){
foo3();
}
}
public void foo3(){
System.out.println("ATM login failed. Throwing authentication failed exception");
throw new ATMException(); //single exception that handles all children.
}
В противном случае вы можете выбрасывать все исключения одно за другим. Но что, если у вас есть 10, 20 исключений, которые в основном связаны с исключением банкоматов. Вы должны генерировать и перехватывать эти исключения повсюду, что происходит позже на уровне сложности вашего кода.