Wyjątki w Javie
maj 26th, 2010
Brak komentarzy
Często w Javie operuje się na strumieniach danych. Operacje na nich są analogiczne do poniższej metody:
public static void checkedException() throws IOException { try { System.out.println("1"); throw new IOException("Exception 1"); } catch (FileNotFoundException e) { System.out.println("2"); throw new IOException("Exception 2"); } catch (IOException e) { System.out.println("3"); throw e; } finally { System.out.println("4"); throw new IOException("Exception 4"); } }
W bloku finally strumienie są zamykane, lecz metoda close() może wyrzucić wyjątek IOException. Wywołanie poniższej metody:
try { checkedException(); } catch (IOException e) { System.out.println(e.getMessage()); }
wypisze na konsoli:
1 3 4 Exception 4
Można by przypuszczać, że wypisany zostanie “Exception 1″, jednak jako ostatni wyrzucony zostaje wyjątek w bloku finally i to on jest przekazywany dalej. Podobna sytuacja dotyczy zwracania wartości w bloku finally.