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

Obsługa błędów za pomocą wyjątków

Jan 11, 2017

Download

Documents

doankien
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Obsługa błędów za pomocą wyjątków

Seminarium problemowe

Temat seminarium:

Obsługa błędów za pomocą wyjątków

Łukasz Czechowski

Page 2: Obsługa błędów za pomocą wyjątków

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

Page 3: Obsługa błędów za pomocą wyjątków

Podstawy obsługi wyjątków

● Sytuacja wyjątkowa● Zgłaszanie/wyrzucanie wyjątku (ang. throwing)

- throw- new- procedura obsługi

● Parametry

Page 4: Obsługa błędów za pomocą wyjątków

Podstawy obsługi wyjątków

● Przykład1) if(obiekt==null)

throw new NullPointerException();Output:

Exception in thread " main" java.lang.NullPointerExceptionat 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ł zainicjowanyat MyClass.main(MyClass.java:47)

Page 5: Obsługa błędów za pomocą wyjątków

Klasy i rodzaje wyjątków

Object

Throwable

Error

RuntimeException

Exception

Hierarchiaklas

wyjątków

Wyjątki niekontrolowaneWyjątki kontrolowane

Page 6: Obsługa błędów za pomocą wyjątków

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}

Page 7: Obsługa błędów za pomocą wyjątków

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) {} } }

Page 8: Obsługa błędów za pomocą wyjątków

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();} }}

Page 9: Obsługa błędów za pomocą wyjątków

Przechwytywanie i obsługa wyjątków

● Przykłady

Output:

e.getMessage() -> 10e.getLocalizedMessage() -> 10e.toString() -> java.lang.ArrayIndexOutOfBoundsException:

10e.printStackTrace() -> java.lang.ArrayIndexOutOfBoundsException:

10 at MyClass.main(MyClass.java:43)

Page 10: Obsługa błędów za pomocą wyjątków

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();} }}

Page 11: Obsługa błędów za pomocą wyjątków

Przechwytywanie i obsługa wyjątków

● Przykłady

Output:

e.getMessage() -> 10e.getLocalizedMessage() -> 10e.toString() -> java.lang.ArrayIndexOutOfBoundsException:

10e.printStackTrace() -> java.lang.ArrayIndexOutOfBoundsException:

10 at MyClass.main(MyClass.java:43)

Page 12: Obsługa błędów za pomocą wyjątków

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();}

Page 13: Obsługa błędów za pomocą wyjątków

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)

Page 14: Obsługa błędów za pomocą wyjątków

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(); }

Page 15: Obsługa błędów za pomocą wyjątków

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)

Page 16: Obsługa błędów za pomocą wyjątków

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");}}

Page 17: Obsługa błędów za pomocą wyjątków

Przechwytywanie i obsługa wyjątków

● Przykłady Output:

Dla liczba=1/0;Niepoprawna operacja arytmetycznaWykonywany za kazdym razem

java.lang.ArithmeticException: / by zero at MyClass.main(MyClass.java:44)

Dla z.x=1Blad ogolnyWykonywany za kazdym razem

java.lang.NullPointerException at MyClass.main(MyClass.java:44)

Dla ;Wykonywany za kazdym razem

Page 18: Obsługa błędów za pomocą wyjątków

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(); }

Page 19: Obsługa błędów za pomocą wyjątków

Przechwytywanie i obsługa wyjątków

● Przykłady Output:

Niepoprawna operacja arytmetycznajava.lang.ArithmeticException: / by zero at MyClass.main(MyClass.java:45)Blad ogolnyjava.lang.NullPointerException at MyClass.main(MyClass.java:50)

Page 20: Obsługa błędów za pomocą wyjątków

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; } }

Page 21: Obsługa błędów za pomocą wyjątków

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(); }}

Page 22: Obsługa błędów za pomocą wyjątków

Przechwytywanie i obsługa wyjątków

● Przykłady Output:

Dla throw e;Blad ogolnyjava.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 ogolnyjava.lang.ArithmeticException: / by zero

at Przyklad.przyklad(MyClass.java:32) at MyClass.main(MyClass.java:50)

Page 23: Obsługa błędów za pomocą wyjątków

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 { ...}

Page 24: Obsługa błędów za pomocą wyjątków

Tworzenie własnych wyjątków i ich specyfikacja

● Przykładclass 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();}}

Page 25: Obsługa błędów za pomocą wyjątków

Tworzenie własnych wyjątków i ich specyfikacja

● PrzykładOutput:

MojWyjatek at Przyklad.przyklad(MyClass.java:37) at MyClass.main(MyClass.java:51)

Page 26: Obsługa błędów za pomocą wyjątków

Tworzenie własnych wyjątków i ich specyfikacja

● Przykładclass 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();}}

Page 27: Obsługa błędów za pomocą wyjątków

Tworzenie własnych wyjątków i ich specyfikacja

● PrzykładOutput:

MojWyjatek: Dzielenie przez zero at Przyklad.przyklad(MyClass.java:37) at MyClass.main(MyClass.java:51)

Page 28: Obsługa błędów za pomocą wyjątków

Tworzenie własnych wyjątków i ich specyfikacja

● Przykład: zagubiony wyjątekclass 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"); }}

Page 29: Obsługa błędów za pomocą wyjątków

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)

Page 30: Obsługa błędów za pomocą wyjątków

KONIEC

Dziękuję za uwagę!