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

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

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

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

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

Aplikacje w środowisku Java

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

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

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

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

Programowanie obiektowe

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

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

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?

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

Podstawy i języki programowania

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

Programowanie obiektowe

Wyjątki (exceptions)

Programowanie Obiektowe Ćwiczenie 4

Dawid Gierszewski Adam Hanasko

1 Klasa File. 2 Writer. Programowanie w j zyku Java - Adam Krechowicz. Klasa File zapewnia podstawowe operacje na plikach

Programowanie obiektowe

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

Klasy cd. Struktury Interfejsy Wyjątki

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

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

Tworzenie i wykorzystanie usług

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

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

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

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

Aplikacje RMI

Materiały do zajęć III

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

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

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

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

Efekty uboczne błędów

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

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

Języki i metody programowania Java Lab1 Zofia Kruczkiewicz

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

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

Platformy Programistyczne Wykład z Javy dla zaawansowanych

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

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

Język C++ wykład VIII

KLASY, INTERFEJSY, ITP

Programowanie obiektowe

Multimedia JAVA. Historia

Ćwiczenie 1. Kolejki IBM Message Queue (MQ)

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

STRUMIENIE DANYCH, SERIALIZACJA OBIEKTÓW

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

Katalog książek cz. 2

JAVA I SIECI. MATERIAŁY:

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

Wybrane algorytmy tablicowe

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

Sposoby tworzenia projektu zawierającego aplet w środowisku NetBeans. Metody zabezpieczenia komputera użytkownika przed działaniem apletu.

Wykład 5 Okna MDI i SDI, dziedziczenie

Programowanie w Internecie. Java

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

Programowanie obiektowe

Aplikacje RMI Lab4

Algorytmy z powrotami. Algorytm minimax

Delphi Laboratorium 3

Podejście obiektowe do budowy systemów rozproszonych

Java RMI. Dariusz Wawrzyniak 1. Podejście obiektowe do budowy systemów rozproszonych. obiekt. interfejs. kliencka. sieć

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

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

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

Autor: dr inż. Zofia Kruczkiewicz, Programowanie aplikacji internetowych 1

Aplikacja wielowątkowa prosty komunikator

Programowanie obiektowe

Remote Method Invocation 17 listopada 2010

Aplikacje RMI. Budowa aplikacji rozproszonych. Część 2.

Konwencje obsługi błędów

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

Wykład 7: Pakiety i Interfejsy

Podejście obiektowe do budowy systemów rozproszonych

Programowanie obiektowe i zdarzeniowe

Remote Method Invocation 17 listopada Dariusz Wawrzyniak (IIPP) 1

PARADYGMATY PROGRAMOWANIA Wykład 4

Programowanie w języku Java WYKŁAD

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

Protokół JDBC współpraca z relacyjnymi bazami danych lab3

Java Zadanie 1. Aby poprawnie uruchomić aplikację desktopową, należy zaimplementować główną metodę zapewniającą punkt wejścia do programu.

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

Podstawy otwartych języków programowania Wyjątki i strumienie I/O

Programowanie obiektowe zastosowanie języka Java SE

Programowanie obiektowe

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

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

Programowanie w Javie Lista nr 1. Wybieramy kategorię Java, a wśród Projektów Java Application i [NEXT]

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

Szablony klas, zastosowanie szablonów w programach

Java RMI. Dariusz Wawrzyniak 1. Podejście obiektowe do budowy systemów rozproszonych. obiekt. interfejs. kliencka. sieć

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

Transkrypt:

Języki i metody programowania Java INF302W Wykład 3 (część 1) Autor Dr inż. Zofia Kruczkiewicz Autor: Zofia Kruczkiewicz, Języki i metody programowania Java, wykład 3, część 1 1

STRUKTURA WYKŁADU 1. Wyjątki, obsługa wyjątków (try catch, throw, throws finally), w programach użytkowników (R-1) Autor: Zofia Kruczkiewicz, Języki i metody programowania Java, wykład 3, część 1 2

WYJĄTKI Definicja: wyjątek jest zdarzeniem (błędem), które występuje podczas wykonywania programu, który zakłóca normalny przepływ instrukcji programu. 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, wywołanymi odpowiadającymi błędami, w blokach try...catch Klasa Error określa wyjątki, które nie powinny być przechwytywane przez program Do obsługi wyjątków, typów pochodnych klasy Exception, używa się następujących słów kluczowych: try...catch, throw, throws, finally Autor: Zofia Kruczkiewicz, Języki i metody programowania Java, wykład 3, część 1 3

Rodzaje wyjątków 1. checked exception obowiązkowo sprawdzane błędy za pomocą obsługi wyjątków, ponieważ nie ma innego sposobu, aby im zapobiegać np java.io.filenotfoundexception 2. error - błędy powodowane niepoprawnym działaniem np sprzętu; java.io.ioerror 3. runtime exception błędy wewnętrzne programu np NullPointerException. Należy poprawić kod programu w celu wyeliminowania tych błędów np stosując instrukcje warunkowe. Są to błędy, które nie muszą być obowiązkowo sprawdzane za pomocą obsługi wyjątków. Uwagi: 1. Obsługa wyjątków jest czasochłonna i prowadzi do dużego zapotrzebowania na zasoby systemu. 2. Wyjątki rodzaju 1 są identycznie obsługiwane jak wyjątki rodzaju 3. Do celów edukacyjnych zastosowano głównie wyjątki rodzaju 3 (oprócz przykładu z p. 12) Autor: Zofia Kruczkiewicz, Języki i metody programowania Java, wykład 3, część 1 4

Obsługa wyjątków 1) Łańcuch wywołań metody, w której wystąpił błąd 2) Poszukiwanie obsługi błędów Autor: Zofia Kruczkiewicz, Języki i metody programowania Java, wykład 3, część 1 5

1) Obsługa wyjątków przez platformę SE 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; public class Proba_1 public static void main(string ags[]) Wyjatek_1 w1= new Wyjatek_1(0); System.out.println("45/"+w1.podaj_x()+" ="+w1.iloraz()); //3 poprawna wartość Normalne zakończenie programu Zakończenie programu po wystąpieniu błędu dzielenia przez 0 Autor: Zofia Kruczkiewicz, Języki i metody programowania Java, wykład 3, część 1 6

2) Przechwytywanie wyjątków przez program kontynuowanie programu po obsłudze wyjątku blok try... catch class Wyjatek_2 int x; Wyjatek_2(int x_) x = x_; int iloraz() int p = -1; //plik Proba_2.java 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 public static void main(string ags[]) 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, Języki i metody programowania Java, wykład 3, część 1 7

Budowa bloku try i catch try //blok try śledzenia wystąpienia błędów (wyjątków) //w zastosowanych instrukcjach kodu bloku. //Po wystąpieniu błędu przerwanie tego // fragmentu kodu i przejście do bloku catch catch( Typ_wyjatku e) //blok catch przechwycenia wyjątku //blok catch kodu do obsługi wyjątku //który działa jedynie po wystąpieniu wyjatku //Typ_wyjątku lub jego typu pochodnego // dalszy kod programu, który może rówież działać //po wystąpieniu wyjątku Autor: Zofia Kruczkiewicz, Języki i metody programowania Java, wykład 3, część 1 8

3) Przechwytywanie wyjątków przez program w różnych blokach try...catch kontynuowanie programu po obsłudze wyjątku class Wyjatek_3 int x[]; Wyjatek_3(int x_, int y_) x = new int [x_]; x[0]=y_; //plik Proba_3.java 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, Języki i metody programowania Java, wykład 3, część 1 9

public class Proba_3 //1-y przypadek przebiegu programu: 2 błędy public static void main(string ags[]) 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, Języki i metody programowania Java, wykład 3, część 1 10

public class Proba_3 //2-i przypadek public static void main(string ags[]) 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); public class Proba_3 //3-i przypadek public static void main(string ags[]) Wyjatek_3 w1=new Wyjatek_3(2, 1); int a=w1.element(4); System.out.println("Wynik metody element: "+a); //wystąpił błąd przekroczenia indeksu int b= w1.odwrotnosc(); System.out.println("Wynik metody odwrotnosc: "+b); public class Proba_3 //4-y przypadek public static void main(string ags[]) Wyjatek_3 w1=new Wyjatek_3(2, 1); int a=w1.element(0); System.out.println("Wynik metody element: "+a); int b= w1.odwrotnosc(); System.out.println("Wynik metody odwrotnosc: "+b); //normalne wykonanie programu brak wyjątków Autor: Zofia Kruczkiewicz, Języki i metody programowania Java, wykład 3, część 1 11

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, ponieważ każdy wyjątek będzie obsługiwany przez blok catch dla wyjątku położonego najwyżej w drzewie dziedziczenia class Wyjatek_4 //plik Proba_4.java int tab[]; Wyjatek_4(int x_, int y_) tab = new int [x_]; tab[0]=y_; ArithmeticException RuntimeException IndexOutOfBoundsException ArrayIndexOutOfBoundsException int element(int p) try int el=1/tab[0]; //1- możliwość generowania wyjątku od dzielenia przez 0 tab[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, Języki i metody programowania Java, wykład 3, część 1 12

//Przypadek poprawnego wykonania programu public class Proba_4 public static void main(string ags[]) Wyjatek_4 w1=new Wyjatek_4(2, 1); int a=w1.element(0); System.out.println("Wynik metody element: "+a); //Przypadek przekroczenia indeksu public class Proba_4 public static void main(string ags[]) Wyjatek_4 w1=new Wyjatek_4(2, 1); int a=w1.element(4); System.out.println("Wynik metody element: "+a); // wystąpienie i obsługa wyjątku Autor: Zofia Kruczkiewicz, Języki i metody programowania Java, wykład 3, część 1 13

//Przypadek dzielenia przez 0 public class Proba_4 public static void main(string ags[]) Wyjatek_4 w1=new Wyjatek_4(2, 0); int a=w1.element(1); System.out.println("Wynik metody element: "+a); //Przypadek obu błędów jednocześnie public class Proba_4 public static void main(string ags[]) Wyjatek_4 w1=new Wyjatek_4(2, 0); int a=w1.element(4); System.out.println("Wynik metody element: "+a); // wystąpienie i obsługa wyjątku //wystąpienie 2 błędów i obsługa 1-go wyjątku //dalszy kod bloku try jest przerwany Autor: Zofia Kruczkiewicz, Języki i metody programowania Java, wykład 3, część 1 14

5) Przechwytywanie 1 z wielu wyjątków w jednym bloku try przez jeden blok catch kontynuowanie programu po obsłudze wyjątku class Wyjatek_4_1 int tab[]; Wyjatek_4(int x_, int y_) tab = new int[x_]; tab[0] = y_; int element(int p) try //plik Wyjatki1.java int el = 1 / tab[0]; //1- możliwość generowania wyjątku od dzielenia przez 0 tab[p] = el; //2- możliwość generowania wyjątku od przekroczonego indeksu return el; catch (ArithmeticException ArrayIndexOutOfBoundsException e) //przechwycenie wyjątków System.out.println("Błąd " + e); return -1; public class Wyjatki1 public static void main(string[] args) Wyjatek_4_1 w1 = new Wyjatek_4_1(2, 1); //new Wyjatek_4_1(2, 0) Błąd java.lang.arrayindexoutofboundsexception: 4 Wynik metody element: -1 int a = w1.element(4); System.out.println("Wynik metody element: " + a); //wystąpienie i obsługa wyjątków Błąd java.lang.arithmeticexception: / by zero Wynik metody element: -1 Autor: Zofia Kruczkiewicz, Języki i metody programowania Java, wykład 3, część 1 15

6) 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 public static void main(string ags[]) 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, Języki i metody programowania Java, wykład 3, część 1 16

7) 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 public static void main(string ags[]) try Wyjatek_6.odwrotnosc(2); //zagnieżdżona 1 a obsługa wyjątku i 2-a obsługa tego samego // wyjątku wygenerowanego za pomocą throw catch (ArithmeticException e) System.out.println("Przechwycony wyjatek 2- raz "+e); Autor: Zofia Kruczkiewicz, Języki i metody programowania Java, wykład 3, część 1 17

8) 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 public static void main(string ags[]) try Wyjatek_7.odwrotnosc(2); catch (Exception e) System.out.println("Przechwycony odlozony wyjatek "+e); Zasada: Obowiązkowa obsługa wyjątków w miejscu wywołania metody odwrotnosc() dotyczy grupy wyjątków rodzaju checked exception użytych w klauzuli throws. Typ tego 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 pozostałych rodzajów wyjątków, czyli: Error (np. OutOfMemoryError) RuntimeException (np. ArithmeticException ) oraz dziedziczących od tych klas. Wniosek: Z tej zasady wynika, że klasy bazowe dla obu tyów wyjątków np. Exception, są wyjątkami rodzaju checked exception, obowiązkowo sprawdzanych. Autor: Zofia Kruczkiewicz, Języki i metody programowania Java, wykład 3, część 1 18

9) Wyjątki generowane w bloku zagnieżdżonym w bloku try, mogą być obsłużone w jego bloku catch (str. 5, 8) class Wyjatek_7_1 //plik Proba_7_1.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 public static void main(string ags[]) try Wyjatek_7_1.oblicz(2); catch (Exception e) System.out.println("Przechwycony odlozony wyjatek "+e); Autor: Zofia Kruczkiewicz, Języki i metody programowania Java, wykład 3, część 1 19

10) 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 w bloku finally instrukcji po wystąpieniu wyjątku lub bez wystąpienia wyjątku System.out.println("Ten blok zawsze bedzie wykonany"); public class Proba_8 // blad a>1 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 // brak bledu a=1 public static void main(string args[]) try Wyjatek_8.odwrotnosc(1); catch (Exception e) System.out.println("Przechwycony odlozony wyjatek "+e); Autor: Zofia Kruczkiewicz, Języki i metody programowania Java, wykład 3, część 1 20

11) Wykonanie wskazanej części metody po bloku try po wystąpieniu w niej wyjątku lub przy braku jego wystąpienia - klauzule finally i catch class Wyjatek_9 //plik Proba_9.java static void odwrotnosc (int a) throws Exception try if (a>1) throw new ArithmeticException("Generowanie wyjatku"); catch (ArithmeticException e) System.out.println("Przechwycony wyjatek 1- raz " + e); throw e; //ręczne generowanie powtórzenia wyjątku finally System.out.println("Ten blok zawsze bedzie wykonany"); //wykonanie instrukcji z bloku finally po wystąpieniu wyjątku lub bez wystąpienia wyjątku Przechwycony wyjatek 1- raz java.lang.arithmeticexception: Generowanie wyjatku Ten blok zawsze bedzie wykonany Przechwycony wyjatek 2- raz java.lang.arithmeticexception: Generowanie wyjatku public class Proba_9 public static void main(string args[]) try Wyjatek_9.odwrotnosc(2); // poprawny dla 1; blok finally również wykonany catch (Exception e) System.out.println("Przechwycony odlozony wyjatek "+e); Ten blok zawsze bedzie wykonany Autor: Zofia Kruczkiewicz, Języki i metody programowania Java, wykład 3, część 1 21

12) Blok try z definicją źródeł np z deklaracją obiektów implementujących interfejsy java.lang.autocloseable oraz java.io.closeable (BufferedReader, FileReader itd) package wyjatki3; import java.io.bufferedreader; import java.io.filereader; import java.io.ioexception; public class Wyjatki3 Obowiązkowa klauzula przy braku bloków catch i/lub finally - przekazanie obslugi wyjątku do metody wywołującej static String readfirstlinefromfile(string path) throws IOException metodę readfirstlinefromfile try (BufferedReader br = new BufferedReader(new FileReader(path))) return br.readline(); Otwarcie zródel BufferedReader, FileReader w bloku try public static void main(string[] args) throws IOException Przekazanie obslugi wyjatku do JVM String s=readfirstlinefromfile("src/wyjatki3/wyjatki3.java"); System.out.println(s); 1. Gdy wystąpi błąd w bloku try, nastąpi zamknięcie automatyczne źródeł, jednak w odwrotnej kolejności niż przy tworzeniu w bloku try 2. Jeśli zostana dodane bloki catch i finally, najpierw zostaną zamknięte źródła, a potem wykonane bloki catch i finally run: package wyjatki3; BUILD SUCCESSFUL (total time: 0 seconds) Autor: Zofia Kruczkiewicz, Języki i metody programowania Java, wykład 3, część 1 22