Будет запущен только первый обнаруженный блок перехвата, в котором тип исключения блока перехвата совпадает с типом создаваемого исключения (более конкретно, первый блок перехвата, где будет выполняться (e instaceof <exception type>)==true
) Ни один из других блоков захвата не будет запущен.
Например
try{
BufferedReader.read();
}
catch(FileNotFoundException e){System.out.println("FileNotFoundException");}
catch(IOException e){System.out.println("IOException");}
Напечатает FileNotFoundException
, если BufferedReader.read()
выбросит FileNotFoundException
.
Обратите внимание, что на самом деле следующее не компилируется:
try{
BufferedReader.read();
}
catch(IOException e){System.out.println("IOException");}
catch(FileNotFoundException e){System.out.println("FileNotFoundException");}
потому что Java понимает, что невозможно FileNotFoundException
быть пойманным, потому что все FileNotFoundException
s также IOException
s.