1 / 30

Seminarium problemowe

Seminarium problemowe. Temat seminarium: Obsługa błędów za pomocą wyjątków. Łukasz Czechowski. Plan prezentacji. 1) Podstawy obsługi wyjątków 2) Klasy i rodzaje wyjątków 3) Przechwytywanie i obsługa wyjątków 4) Tworzenie własnych wyjątków i ich specyfikacja. Podstawy obsługi wyjątków.

Download Presentation

Seminarium problemowe

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Seminarium problemowe Temat seminarium: Obsługa błędów za pomocą wyjątków Łukasz Czechowski

  2. Plan prezentacji 1) Podstawy obsługi wyjątków 2) Klasy i rodzaje wyjątków 3) Przechwytywanie i obsługa wyjątków 4) Tworzenie własnych wyjątków i ich specyfikacja

  3. Podstawy obsługi wyjątków ● Sytuacja wyjątkowa ● Zgłaszanie/wyrzucanie wyjątku (ang. throwing) - throw - new - procedura obsługi ● Parametry

  4. Podstawy obsługi wyjątków ● Przykład 1) if(obiekt==null) throw new NullPointerException(); Output: Exception in thread " main" java.lang.NullPointerException at MyClass.main(MyClass.java:47) 2) if(obiekt2==null) throw new NullPointerException(”Obiekt2 nie został zainicjowany”); Output: Exception in thread " main" java.lang.NullPointerException: Obiekt2 nie został zainicjowany at MyClass.main(MyClass.java:47)

  5. Klasy i rodzaje wyjątków

  6. Przechwytywanie i obsługa wyjątków ● Blok try, catch i finally try { //kod który może zgłosić wyjątki } catch (Typ1 w) { //obsługa wyjątków Typ1 } catch (Typ2 w) { //obsługa wyjątków Typ2 } catch (Typ3 w) { //obsługa wyjątków Typ3 } finally { //czynności, które są wykonywane za każdym razem }

  7. Przechwytywanie i obsługa wyjątków ● Przykłady public class MyClass { public static void main(String args[]) { int []tablica=new int[10]; try{ tablica[10]=2; }catch(ArrayIndexOutOfBoundsException e) {} } }

  8. Przechwytywanie i obsługa wyjątków ● Przykłady public class MyClass { public static void main(String args[]) { int []tablica=new int[10]; try{ tablica[10]=2; }catch(ArrayIndexOutOfBoundsException e) { System.out.println(e.getMessage()); System.out.println(e.getLocalizedMessage()); System.out.println(e.toString()); e.printStackTrace(); } } }

  9. Przechwytywanie i obsługa wyjątków ● Przykłady Output: e.getMessage() -> 10 e.getLocalizedMessage() -> 10 e.toString() -> java.lang.ArrayIndexOutOfBoundsException: 10 e.printStackTrace() -> java.lang.ArrayIndexOutOfBoundsException: 10 at MyClass.main(MyClass.java:43)

  10. Przechwytywanie i obsługa wyjątków ● Przykłady public class MyClass { public static void main(String args[]) { int []tablica=new int[10]; try{ tablica[10]=2; }catch(Exception e) { System.out.println(e.getMessage()); System.out.println(e.getLocalizedMessage()); System.out.println(e.toString()); e.printStackTrace(); } } }

  11. Przechwytywanie i obsługa wyjątków ● Przykłady Output: e.getMessage() -> 10 e.getLocalizedMessage() -> 10 e.toString() -> java.lang.ArrayIndexOutOfBoundsException: 10 e.printStackTrace() -> java.lang.ArrayIndexOutOfBoundsException: 10 at MyClass.main(MyClass.java:43)

  12. Przechwytywanie i obsługa wyjątków ● Przykłady class Przyklad { public double przyklad(int a,int b){ if(b==0) throw new ArithmeticException("Divide by zero"); return a/b; } } public class MyClass { public static void main(String args[]) { Przyklad np=new Przyklad(); try{ np.przyklad(1,0); }catch(ArithmeticException e){ e.printStackTrace(); }

  13. Przechwytywanie i obsługa wyjątków ● Przykłady Output: java.lang.ArithmeticException: Divide by zero at Przyklad.przyklad(MyClass.java:28) at MyClass.main(MyClass.java:40)

  14. Przechwytywanie i obsługa wyjątków ● Przykłady class Przyklad { public double przyklad(int a,int b){ return podziel(a,b); } public double podziel(int a,int b){ if(b==0) throw new ArithmeticException("Divide by zero"); return a/b;} } public class MyClass { public static void klasa(){ Przyklad np=new Przyklad(); np.przyklad(1,0); } public static void main(String args[]) { try{ klasa(); }catch(ArithmeticException e){ e.printStackTrace(); }

  15. Przechwytywanie i obsługa wyjątków ● Przykłady Output: java.lang.ArithmeticException: Divide by zero at Przyklad.podziel(MyClass.java:31) at Przyklad.przyklad(MyClass.java:27) at MyClass.klasa(MyClass.java:39) at MyClass.main(MyClass.java:45)

  16. Przechwytywanie i obsługa wyjątków ● Przykłady class Punkt { int x,y; } public class MyClass { public static void main(String args[]){ Punkt z=null; int liczba; try{ liczba=1/0; z.x=1; }catch(ArithmeticException e){ System.out.println("Niepoprawna operacja arytmetyczna"); e.printStackTrace(); }catch(Exception e){ System.out.println("Blad ogolny"); e.printStackTrace(); }finally{System.out.println("Wykonywany za kazdym razem");}}

  17. Przechwytywanie i obsługa wyjątków • ● Przykłady • Output: • Dla liczba=1/0; • Niepoprawna operacja arytmetyczna • Wykonywany za kazdym razem • java.lang.ArithmeticException: / by zero • at MyClass.main(MyClass.java:44) • Dla z.x=1 • Blad ogolny • Wykonywany za kazdym razem • java.lang.NullPointerException • at MyClass.main(MyClass.java:44) • Dla ; • Wykonywany za kazdym razem

  18. Przechwytywanie i obsługa wyjątków ● Przykłady class Punkt { int x,y; } public class MyClass { public static void main(String args[]){ Punkt z=null; int liczba; try{ try{ liczba=2/0; }catch(ArithmeticException e){ System.err.println("Niepoprawna operacja arytmetyczna"); e.printStackTrace(); liczba=0;} z.x=liczba; }catch(Exception e){ System.err.println("Blad ogolny"); e.printStackTrace(); }

  19. Przechwytywanie i obsługa wyjątków • ● Przykłady • Output: • Niepoprawna operacja arytmetyczna • java.lang.ArithmeticException: / by zero • at MyClass.main(MyClass.java:45) • Blad ogolny • java.lang.NullPointerException • at MyClass.main(MyClass.java:50)

  20. Przechwytywanie i obsługa wyjątków ● Przykłady class Przyklad { public double wynik; public double przyklad(int a,int b) throws Throwable{ try{ wynik=podziel(a,b); }catch(ArithmeticException e){ //throw e; //throw e.fillInStackTrace(); } return wynik; } public double podziel(int a,int b){ return a/b; } }

  21. Przechwytywanie i obsługa wyjątków ● Przykłady public class MyClass { public static void main(String args[]) throws Throwable{ Przyklad np=new Przyklad(); int liczba; try{ np.przyklad(1,0); }catch(Exception e){ System.err.println("Blad ogolny"); e.printStackTrace(); } }

  22. Przechwytywanie i obsługa wyjątków • ● Przykłady • Output: • Dla throw e; • Blad ogolny • java.lang.ArithmeticException: / by zero • at Przyklad.podziel(MyClass.java:38) • at Przyklad.przyklad(MyClass.java:29) • at MyClass.main(MyClass.java:50) • Dla throw e.fillInStackTrace(); • Blad ogolny • java.lang.ArithmeticException: / by zero • at Przyklad.przyklad(MyClass.java:32) at MyClass.main(MyClass.java:50)

  23. Tworzenie własnych wyjątków i ich specyfikacja ● Tworzenie własnego wyjątku class MojWyjatek extends Exception{ } ● Specyfikacja public double przyklad(int a,int b) throws MojWyjatek { . . . }

  24. Tworzenie własnych wyjątków i ich specyfikacja ● Przykład class MojWyjatek extends Exception{ } class Przyklad { public double przyklad(int a,int b)throws MojWyjatek { if(b==0) throw new MojWyjatek(); return a/b; } } public class MyClass { public static void main(String args[]){ Przyklad np=new Przyklad(); try{ np.przyklad(1,0); }catch(MojWyjatek e){e.printStackTrace();}}

  25. Tworzenie własnych wyjątków i ich specyfikacja ● Przykład Output: MojWyjatek at Przyklad.przyklad(MyClass.java:37) at MyClass.main(MyClass.java:51)

  26. Tworzenie własnych wyjątków i ich specyfikacja ● Przykład class MojWyjatek extends Exception{ public MojWyjatek(String inf) super(inf); } class Przyklad { public double przyklad(int a,int b)throws MojWyjatek { if(b==0) throw new MojWyjatek(”Dzielenie przez zero”); return a/b; } } public class MyClass { public static void main(String args[]){ Przyklad np=new Przyklad(); try{ np.przyklad(1,0); }catch(MojWyjatek e){e.printStackTrace();}}

  27. Tworzenie własnych wyjątków i ich specyfikacja ● Przykład Output: MojWyjatek: Dzielenie przez zero at Przyklad.przyklad(MyClass.java:37) at MyClass.main(MyClass.java:51)

  28. Tworzenie własnych wyjątków i ich specyfikacja ● Przykład: zagubiony wyjątek class MojWyjatek extends Exception{ public MojWyjatek(String inf){ super(inf); } } class Przyklad { public double przyklad(int a,int b)throws MojWyjatek { if(b==0) throw new MojWyjatek("Dzielenie przez zero"); return a/b; } public void przyklad2(int a,int b)throws MojWyjatek { throw new MojWyjatek("Wyjatek"); } }

  29. Tworzenie własnych wyjątków i ich specyfikacja ● Przykład: zagubiony wyjątek public class MyClass { public static void main(String args[])throws MojWyjatek{ Przyklad np=new Przyklad(); try{ np.przyklad(1,0); }finally{ np.przyklad2(2,0); } Output: Exception in thread "main" MojWyjatek: Wyjatek at Przyklad.przyklad2(MyClass.java:38) at MyClass.main(MyClass.java:51)

  30. KONIEC Dziękuję za uwagę!

More Related