throw — для того, чтобы вручную выбросить исколючение
Что будет выведено на экран ?
public static void main(String[] args) { System.out.println("=== START PROGRAM ==="); try { z(); System.out.println("After z"); } catch (Exception e) { System.out.println("e " + e.getMessage()); } System.out.println("=== END PROGRAM ==="); } static void z() throws IOException { try { System.out.println("z in try"); throw new IOException("IOException in z()"); } catch (IOException e) { System.out.println("e " + e.getMessage()); System.out.println("z catch"); throw e; } }
=== START PROGRAM ===
z in try
e IOException in z()
z catch
e IOException in z()
=== END PROGRAM ===
Т.е. сначала
=== START PROGRAM ===
z in try
Далее выбросится IOException и мы попадем в catch метода z.
e IOException in z() — будет напечатано, т.к. данные текст передается в конструктор класса IOException.
z catch
Далее, выбрасываем еще исключение throw e, поэтому в методе main строку «After z» не печатаем, а попадаем в catch метода main.
Там опять же печатается:
e IOException in z()
И финиш программы:
=== END PROGRAM ===