WYJĄTKI. Jest ona jednak czasochłonna i prowadzi do duŝego zapotrzebowania na zasoby systemu.

Podobne dokumenty
Throwable. Wyjatek_1(int x_) { x = x_; } int podaj_x()

Języki i metody programowania Java INF302W Wykład 3 (część 1)

Programowanie w języku Java - Wyjątki, obsługa wyjątków, generowanie wyjątków

Aplikacje w środowisku Java

Wykład 8: Obsługa Wyjątków

Wyjątki Monika Wrzosek (IM UG) Programowanie obiektowe 180 / 196

Wyjątki. Streszczenie Celem wykładu jest omówienie tematyki wyjątków w Javie. Czas wykładu 45 minut.

Programowanie obiektowe

Java SE Laboratorium nr 4. Temat: Obsługa wyjątków i zdarzeń

Obsługa błędów za pomocą wyjątków. Paweł Motofa (140746)

Wykład 04. Programowanie obiektowe. Maciej Wołoszyn 17 marca Spis treści

Programowanie Obiektowe Ćwiczenie 4

Obsługa wyjątków. Rysunek 2-4 Hierarchia dziedziczenia klas wyjątków

Wyjątki (exceptions)

Programowanie obiektowe

Java podstawy jęyka. Wykład 2. Klasy abstrakcyjne, Interfejsy, Klasy wewnętrzne, Anonimowe klasy wewnętrzne.

Zad.30. Czy można utworzyć klasę, która implementuje oba interfejsy?

Kurs programowania. Wykład 3. Wojciech Macyna. 22 marca 2019

PODEJŚCIE OBIEKTOWE. Przykład 1 metody i atrybuty statyczne

Dawid Gierszewski Adam Hanasko

Wprowadzanie danych z klawiatury. Wyjątki związane z wprowadzaniem danych, przekroczeniem rozmiaru tablicy, dzieleniem przez zero itd.

Kurs programowania. Wykład 1. Wojciech Macyna. 3 marca 2016

public - może być używana w kodzie poza klasą, jedna klasa ModyfikatorKlasy może być kombinacją wyrażeń:

Klasy cd. Struktury Interfejsy Wyjątki

Zaawansowane programowanie w języku C++ Wyjątki

Programowanie w C++ Wykład 8. Katarzyna Grzelak. 7 maja K.Grzelak (Wykład 8) Programowanie w C++ 1 / 31

DOSTĘP DO METOD I ZMIENNYCH, TABLICE. Dostęp do zmiennych (na podstawie:l.lemay,r.cadenhead,java 2 dla kaŝdego, Helion 2001)

Podstawy i języki programowania

Programowanie obiektowe

Programowanie w C++ Wykład 6. Katarzyna Grzelak. kwiecień K.Grzelak (Wykład 6) Programowanie w C++ 1 / 40

Wykład 2 Wybrane konstrukcje obiektowych języków programowania (1)

Języki i metody programowania Java. Wykład 2 (część 2)

Język JAVA podstawy. Wykład 3, część 3. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Wykład 4 Delegat (delegate), właściwości indeksowane, zdarzenie (event) Zofia Kruczkiewicz

Java. Wykład. Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ

Programowanie urządzeń mobilnych. dr inż. Andrzej Grosser na podstawie wykładu dr inż. Juliusza Mikody

Obsługa wyjątków. Język C++ WW12

Efekty uboczne błędów

Struktura programu: package pl.mojastrona.mojpakiet; import javax.swing.*; import java.awt.container; class MojaKlasa extends Jframe {

Języki i metody programowania Java Lab2 podejście obiektowe

Konwencje obsługi błędów

Obiektowe programowanie rozproszone Java RMI. Krzysztof Banaś Systemy rozproszone 1

Konstruktory. Streszczenie Celem wykładu jest zaprezentowanie konstruktorów w Javie, syntaktyki oraz zalet ich stosowania. Czas wykładu 45 minut.

1. Co można powiedzieć o poniższym kodzie? public interface I { void m1() {}; static public void m2() {}; void abstract m3();

Wyjątki. Wyjątki. Bogdan Kreczmer. Katedra Cybernetyki i Robotyki Politechnika Wrocławska

Pętle while, for, do while, instrukcje break, continue, switch 1. Pętle

Dziedziczenie wielobazoweuzupełnienie

Platformy Programistyczne Wykład z Javy dla zaawansowanych

Programowanie obiektowe

Wielowątkowość. Programowanie w środowisku rozproszonym. Wykład 1.

Projektowanie algorytmów rekurencyjnych

Materiały do zajęć III

Programowanie obiektowe i zdarzeniowe

Programowanie obiektowe

Java: kilka brakujących szczegółów i uniwersalna nadklasa Object

Aplikacje RMI

STRUMIENIE DANYCH, SERIALIZACJA OBIEKTÓW

Język C++ wykład VIII

Podstawy programowania obiektowego

Klasyfikacja wyjątków

DOSTĘP DO METOD I ZMIENNYCH. Dostęp do zmiennych (na podstawie:l.lemay,r.cadenhead,java 2 dla każdego, Helion 2001)

dziedziczenie - po nazwie klasy wystąpią słowa: extends nazwa_superklasy

Języki Programowania II Wykład 3. Java podstawy. Przypomnienie

Języki i metody programowania Java INF302W Wykład 2 (część 1)

Zdalne wywołanie metod - koncepcja. Oprogramowanie systemów równoległych i rozproszonych Wykład 7. Rodzaje obiektów. Odniesienie do obiektu

Zofia Kruczkiewicz, Programowanie obiektowe - java, wykład 2 1

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

Programowanie w Internecie. Java

Multimedia JAVA. Historia

Podejście obiektowe. Tablice obiektów Przykład 1 metody i atrybuty statyczne oraz niestatyczne

1. Co będzie wynikiem wykonania poniŝszych instrukcji? g2d.gettransform().scale(1, -1); g2d.gettransform().translate(4, -8); g2d.drawline(4, 0, 4, 4);

Programowanie w Javie wykład 7 Klasy c.d. (przeciążanie metod, polimorfizm) Metody i klasy abstrakcyjne Bloki inicjalizacyjne

KLASY, INTERFEJSY, ITP

Tworzenie i wykorzystanie usług

Programowanie obiektowe

Programowanie w Javie wykład 6

Kurs programowania. Wykład 9. Wojciech Macyna. 28 kwiecień 2016

Programowanie w języku Java WYKŁAD

Wykład 5 Okna MDI i SDI, dziedziczenie

Aplikacja wielowątkowa prosty komunikator

Polimorfizm, metody wirtualne i klasy abstrakcyjne

Języki i metody programowania Java Lab1 Zofia Kruczkiewicz

Wybrane algorytmy tablicowe

Wykład 4: Klasy i Metody

Oprogramowanie systemów równoległych i rozproszonych Wykład 7

Przypomnienie o klasach i obiektach

Platforma.NET. Laboratorium nr 1 Podstawy języka C#

Połączenia między bazami danych i programem w języku Java część 2

Programowanie obiektowe

Java. Programowanie Obiektowe Mateusz Cicheński

Instrukcja 10 Laboratorium 13 Testy akceptacyjne z wykorzystaniem narzędzia FitNesse

Programowanie obiektowe. Literatura: Autor: dr inŝ. Zofia Kruczkiewicz

Programowanie obiektowe

PODSTAWOWE ELEMENTY JĘZYKA JAVA INSTRUKCJE 1. Pętle

Współbieżność i równoległość w środowiskach obiektowych. Krzysztof Banaś Obliczenia równoległe 1

Składnia C++ Programowanie Obiektowe, część 3 Mateusz Cicheński

Programowanie obiektowe

Interfejsy. Programowanie obiektowe. Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej

MATERIAŁY POMOCNICZE DO ĆWICZENIA 3 Klasy i obiekty; atrybuty i metody

Programowanie obiektowe zastosowanie języka Java SE

Transkrypt:

WYJĄTKI Klasa Throwable Exception Error Klasy dziedziczące po klasie Exception są typami wyjątków, które automatycznie obsługuje Java lub program przy jawnym przechwytywaniu i obsłudze wyjątków w blokach try...catch Klasa Error określa wyjątki, które w normalnej sytuacji nie powinny być przechwytywane przez program Do obsługi wyjątków uŝywa się następujących słów kluczowych: try...catch, throw, throws, finally Jeśli nie moŝna zapobiec wystąpieniu wyjątków za pomocą instrukcji warunkowych lub wyboru, np. przy wyjątkach typu IOException (błędy we/wy), wtedy naleŝy stosować obsługę wyjątków. Jest ona jednak czasochłonna i prowadzi do duŝego zapotrzebowania na zasoby systemu. Autor: Zofia Kruczkiewicz, Programowanie obiektowe Java, wykład 6 1

1) Obsługa wyjątków system czasu przebiegu Javy przerwanie programu class Wyjatek_1 //plik Proba_1.java int x; Wyjatek_1(int x_) x = x_; int iloraz() int p = 45/x; // moŝliwość generowania wyjątku od dzielenia przez 0 i return p; // przerwanie programu int podaj_x() return x; class Proba_1 Wyjatek_1 w1= new Wyjatek_1(0); //3 poprawna wartość System.out.println("45/"+w1.podaj_x()+" ="+w1.iloraz()); //Zakończenie programu po //wystąpieniu błędu dzielenia przez 0 //Normalne zakończenie programu Autor: Zofia Kruczkiewicz, Programowanie obiektowe Java, wykład 6 2

2) Przechwytywanie wyjątków przez program kontynuowanie programu po obsłudze wyjątku blok try... catch class Wyjatek_2 //plik Proba_2.java int x; Wyjatek_2(int x_) x = x_; int iloraz() int p = -1; try p=45/x; //moŝliwość generowania wyjątku od dzielenia przez 0 catch( ArithmeticException e) //przechwycenie wyjątku System.out.println("Dzielenie przez zero "+e); return p; //kontynuacja programu int podaj_x() return x; public class Proba_2 Wyjatek_2 w1=new Wyjatek_2(0); System.out.println("45/"+w1.podaj_x()+" ="+w1.iloraz()); // wystąpienie i obsługa wyjątku System.out.println("Program dalej działa"); Autor: Zofia Kruczkiewicz, Programowanie obiektowe Java, wykład 6 3

3) Przechwytywanie wyjątków przez program w róŝnych blokach try...catch kontynuowanie programu po obsłudze wyjątku class Wyjatek_3 //plik Proba_3.java int x[]; Wyjatek_3(int x_, int y_) x = new int [x_]; x[0]=y_; int element(int p) try int el = x[p]; //moŝliwość generowanie wyjątku od przekroczenia indeksu tablicy return el; catch( ArrayIndexOutOfBoundsException e) //przechwycenie wyjątku System.out.println("Przekroczenie zakresu tablicy "+e); return -1; int odwrotnosc() int a=-1; try a=1/x[0]; //moŝliwość generowania wyjątku od dzielenia przez 0 catch(arithmeticexception e) //przechwycenie wyjątku System.out.println("Dzielenie przez zero "+e); return a; //kontynuacja programu Autor: Zofia Kruczkiewicz, Programowanie obiektowe Java, wykład 6 4

class Proba_3 Wyjatek_3 w1=new Wyjatek_3(2, 0); // wystąpienie i obsługa wyjątku, gdy nastąpi próba dostępu poza tablicę int a=w1.element(4); System.out.println("Wynik metody element: "+a); // wystąpienie i obsługa wyjątku, gdy nastąpi próba dzielenia przez 0 int b= w1.odwrotnosc(); System.out.println("Wynik metody odwrotnosc: "+b); //wystąpiły dwa wyjątki: przekroczenie indeksu i dzielenie przez 0 Autor: Zofia Kruczkiewicz, Programowanie obiektowe Java, wykład 6 5

class Proba_3 Wyjatek_3 w1=new Wyjatek_3(2, 0); int a=w1.element(0); System.out.println("Wynik metody element: "+a); int b= w1.odwrotnosc(); //wystąpił błąd dzielenia przez 0 System.out.println("Wynik metody odwrotnosc: "+b); class Proba_3 Wyjatek_3 w1=new Wyjatek_3(2, 1); int a=w1.element(4); System.out.println("Wynik metody element: "+a); //wystąpił wyjątek przekroczenia indeksu int b= w1.odwrotnosc(); System.out.println("Wynik metody odwrotnosc: "+b); class Proba_3 Wyjatek_3 w1=new Wyjatek_3(2, 1); int a=w1.element(0); //normalne wykonanie programu brak wyjątków System.out.println("Wynik metody element: "+a); int b= w1.odwrotnosc(); System.out.println("Wynik metody odwrotnosc: "+b); Autor: Zofia Kruczkiewicz, Programowanie obiektowe Java, wykład 6 6

4) Przechwytywanie 1 z wielu wyjątków w jednym bloku try przez jeden z wielu bloków catch kontynuowanie programu po obsłudze wyjątku Blok try zawiera wiele instrukcji, które generują więcej, niŝ jeden wyjątek Konstrukcja obsługi wyjątków zawiera więcej niŝ jeden blok catch Wybierany jest pierwszy z bloków catch, dla którego typ wyjątku jest zgodny Klasy wyjątków w blokach catch nie mogą być powiązane dziedziczeniem w kolejności ich umieszczenia Przykład class Wyjatek_4 //plik Proba_4.java int x[]; Wyjatek_4(int x_, int y_) x = new int [x_]; x[0]=y_; int element(int p) try int el=1/x[0]; //1- moŝliwość generowania wyjątku od dzielenia przez 0 x[p]=el; //2- moŝliwość generowania wyjątku od przekroczonego indeksu return el; catch(arithmeticexception e) //przechwycenie wyjątku 1 System.out.println("Dzielenie przez zero "+e); catch(arrayindexoutofboundsexception e) //przechwycenie wyjątku 2 System.out.println("Przekroczenie zakresu tablicy "+e); return -1; Autor: Zofia Kruczkiewicz, Programowanie obiektowe Java, wykład 6 7

//Przypadek poprawnego wykonania programu public class Proba_4 Wyjatek_4 w1=new Wyjatek_4(2, 1); int a=w1.element(0); // wystąpienie i obsługa wyjątku System.out.println("Wynik metody element: "+a); //Przypadek przekroczenia indeksu public class Proba_4 Wyjatek_4 w1=new Wyjatek_4(2, 1); int a=w1.element(4); // wystąpienie i obsługa wyjątku System.out.println("Wynik metody element: "+a); Autor: Zofia Kruczkiewicz, Programowanie obiektowe Java, wykład 6 8

//Przypadek dzielenia przez 0 public class Proba_4 Wyjatek_4 w1=new Wyjatek_4(2, 0); int a=w1.element(1); System.out.println("Wynik metody element: "+a); // wystąpienie i obsługa wyjątku //lub obu wyjątków jednocześnie public class Proba_4 Wyjatek_4 w1=new Wyjatek_4(2, 0); int a=w1.element(4); //wystąpienie i obsługa wyjątku System.out.println("Wynik metody element: "+a); Autor: Zofia Kruczkiewicz, Programowanie obiektowe Java, wykład 6 9

5) Ponowne generowanie wyjątku ( ręczne ) - kontynuowanie programu po obsłudze wyjątku class Wyjatek_5 //plik Proba_5.java static void odwrotnosc (int a) try int b=1/a; //automatyczne wywołanie wyjątku, gdy a=0 catch (ArithmeticException e) //przechwycenie wyjątku od dzielenia przez 0 System.out.println("Przechwycony wyjatek 1- raz "+e); throw e; //ręczne generowanie powtórzenia wyjątku public class Proba_5 try Wyjatek_5.odwrotnosc(0); //zagnieŝdŝona obsługa wyjątku - wymuszona obsługa wyjątku - throw catch (ArithmeticException e) System.out.println("Przechwycony wyjatek 2- raz "+e); Autor: Zofia Kruczkiewicz, Programowanie obiektowe Java, wykład 6 10

6) Generowanie wyjątku ( ręczne ) - kontynuowanie programu po obsłudze wyjątku klauzula throw Wystapienie_klasy_pochodnej_Throwable class Wyjatek_6 //plik Proba_6.java static void odwrotnosc (int a) try if (a>1) throw new ArithmeticException("Generowanie wyjatku"); // ręczne generowanie wyjątku catch (ArithmeticException e) System.out.println("Przechwycony wyjatek 1- raz "+e); throw e; //ręczne generowanie powtórzenia wyjątku public class Proba_6 try Wyjatek_6.odwrotnosc(2); //zagnieŝdŝona obsługa wyjątku - wymuszona obsługa wyjątku - throw catch (ArithmeticException e) System.out.println("Przechwycony wyjatek 2- raz "+e); Autor: Zofia Kruczkiewicz, Programowanie obiektowe Java, wykład 6 11

7) Przekazanie obsługi wyjątku do innej części programu klauzula throws typ nazwa metody (lista_parametrów) throws lista_wyjątków class Wyjatek_7 //plik Proba_7.java static void odwrotnosc (int a ) throws Exception if (a>1) throw new ArithmeticException ("Generowanie wyjatku"); public class Proba_7 try Wyjatek_7.odwrotnosc(2); catch (Exception e) System.out.println("Przechwycony odlozony wyjatek "+e); Obowiązkowa obsługa wyjątków w miejscu wywołania metody odwrotnosc() dotyczy grupy wyjątków bezpośrednich (explicite exception uŝytych w klauzuli throws. Typ wyjątku w bloku catch musi być albo identycznej klasy uŝytej w throws lub klasy, od której dziedziczy klasa wyjątku uŝyta w throws. Zasada ta nie dotyczy wyjątków typu pośredniego (implicit exception), czyli: Error (np. OutOfMemoryError) RuntimeException (np. ArithmeticException ) oraz dziedziczących od tych klas. Z tej zasady wynika, Ŝe klasy bazowe dla obu typów wyjątków np. Exception, są wyjątkami bezpośrednimi Autor: Zofia Kruczkiewicz, Programowanie obiektowe Java, wykład 6 12

8) Wyjątki generowane w bloku zagnieŝdŝonym w bloku try, mogą być obsłuŝone w jego bloku catch class Wyjatek_7_1 //plik Proba_7.java static void odwrotnosc (int a) if (a>1) throw new ArithmeticException("Generowanie wyjatku"); static void oblicz(int b) odwrotnosc(b); public class Proba_7_1 try Wyjatek_7_1.oblicz(2); catch (Exception e) System.out.println("Przechwycony odlozony wyjatek "+e); Autor: Zofia Kruczkiewicz, Programowanie obiektowe Java, wykład 6 13

9) Wykonanie wskazanej części metody po bloku try po wystąpieniu w niej wyjątku lub przy braku jego wystąpienia - klauzula finally class Wyjatek_8 //plik Proba_8.java static void odwrotnosc (int a) throws Exception try if (a>1) throw new ArithmeticException("Generowanie wyjatku"); finally // (zamiast catch) wykonanie instrukcji po wystąpieniu wyjątku lub bez wystąpienia wyjątku System.out.println("Ten blok zawsze bedzie wykonany"); public class Proba_8 public static void main(string args[]) try Wyjatek_8.odwrotnosc(2); catch (Exception e) System.out.println("Przechwycony odlozony wyjatek "+e); public class Proba_8 public static void main(string args[]) try Wyjatek_8.odwrotnosc(1); catch (Exception e) System.out.println("Przechwycony odlozony wyjatek "+e); Autor: Zofia Kruczkiewicz, Programowanie obiektowe Java, wykład 6 14