Bartosz Walter <Bartek.Walter@man.poznan.pl> Inżynieria oprogramowania Lecture XXX JavaTM – część II Bartosz Walter <Bartek.Walter@man.poznan.pl>

Slides:



Advertisements
Podobne prezentacje
Wstęp do strumieni danych
Advertisements

Język C/C++ Funkcje.
C++ wykład 7 ( ) Wyjątki.
Mgr inż.Marcin Borkowski Podstawy Java Część II
Dzisiejszy wykład Wyjątki.
Programowanie obiektowe
Język ANSI C Funkcje Wykład: Programowanie komputerów
Prowadzący: mgr inż. Elżbieta Majka
Bezpieczeństwo wyjątków w C++: OpenGL
PROGRAMOWANIE STRUKTURALNE
Wybrane elementy języka Java
Szablony (wzorce) Przykład 1: Szablon klasy -
Licznik template<class Count_Type> class Count { public:
Obsługa błędów w programach i zapobieganie ich występowaniu.
27/09/ Języki programowania 1 Piotr Górczyński Obsługa błędów.
Inżynieria oprogramowania Lecture XXX JavaTM – część IV: IO
Struktury.
C++ wykład 7 ( ) Wyjątki. Ogólne spojrzenie na wyjątki Wyjątki zaprojektowano do wspierania obsługi błędów. System wyjątków dotyczy zdarzeń synchronicznych.
Gniazda komunikacji sieciowej w języku Java
Temat nr 10: System przerwań
Czytanie, pisanie i rysowanie – cd.. Jeszcze jeden strumyk PrintStream działa jak PrintWriter, ale: Używa domyślnego (systemowego) kodowania Nie wyrzuca.
Java – programowanie obiektowe
Wyjątki, rzutowanie typów, operator instanceOf
Podstawy programowania
Pakiety w Javie Łukasz Smyczyński (132834). Czym są pakiety? Klasy w Javie są grupowane w pewne zbiory zwane pakietami. Pakiety są więc pewnym podzbiorem.
Podstawy programowania II
Programowanie urządzeń mobilnych – wykład IV
Transakcje zarządzane kontenerem
Java 3 MPDI Programowanie obiektowe W7. import java.io.*; public class X { // kontrukcja throws – określenie jakie wyjątki może dana metoda // sygnalizować
PL/SQL Zajęcia nr II PL/SQL(2) M. Rakowski - WSISiZ.
PHP: warunki, pętle, switch, break, continue
Automatyka i Robotyka Systemy czasu rzeczywistego Wykład 4.
Programowanie obiektowe – zastosowanie języka Java SE
JAVA c.d.. Instrukcji wyboru SWITCH używamy, jeśli chcemy w zależności od wartości pewnego wyrażenia wykonać jeden z kilku fragmentów kodu. Jest to w.
Andrzej Repak Nr albumu
Java – coś na temat Klas Piotr Rosik
Inicjalizacja i sprzątanie
Seminarium problemowe
Programowanie obiektowe Wykład 3 dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/21 Dariusz Wardowski.
Programowanie obiektowe Wykład 6 dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/14 Dariusz Wardowski.
Podstawy informatyki 2013/2014 Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi.
Przekazywanie parametrów do funkcji oraz zmienne globalne i lokalne
Programowanie obiektowe 2013/2014
K URS JĘZYKA C++ – WYKŁAD 7 ( ) Wyjątki.
Treści multimedialne - kodowanie, przetwarzanie, prezentacja Odtwarzanie treści multimedialnych Andrzej Majkowski informatyka +
Responsywne aplikacje w Windows 8 i.NET 4.5 Jakub Binkowski.
Zmienne i typy danych w C#
Technologie internetowe Wykład 7 Kontrola danych użytkownika.
Technologie internetowe Wykład 5 Wprowadzenie do skrytpów serwerowych.
Programowanie proceduralne Podstawy Programowania dla geoinformatyków Wykład 3 Rafał Witkowski, 2015.
1 SBD, L.Banachowski Oprogramowanie strony serwera cz. 1 Powtórzenie wyk ł adu 6.
Wyjątki. Po co nam wyjątki? Często pisząc jakiś kod staramy się go uczynić uniwersalnym, jesteśmy w stanie wykryć sytuacje niepoprawne, ale nasz kod może.
Paweł Starzyk Obiektowe metody projektowania systemów
Programowanie Zaawansowane
Zestaw pytań nr. 3 Typy generyczne Wyjątki OPRACOWALI: JAKUB GRYCZEWSKIKINGA ROSA DANIEL KAPTEJNYWOJCIECH ŁĘCZYCKI
PO13-1 / 19 Wykład 13 Wyjątki i ich zgłaszanie Wyłapywanie wyjątków Obsługa wyjątków Wykorzystanie polimorfizmu Filtrowanie wyjątków Błędy w konstruktorach.
Podstawy informatyki Mechanizm obsługi sytuacji wyjątkowych Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu.
K URS JĘZYKA C++ – WYKŁAD 3 ( ) Przenoszenie Składowe statyczne Funkcje wbudowane Argumenty domyślne.
Strumienie w języku Java Bartosz Walter InMoST Wielkopolska sieć współpracy w zakresie innowacyjnych metod wytwarzania oprogramowania Termin realizacji:
C++ mgr inż. Tomasz Turba Politechnika Opolska 2016.
Programowanie Obiektowe – Wykład 6
Dzisiejsze zajęcia będą wyjątkowe…
Strumienie, Wczytywanie, Zapisywanie, Operacje na plikach
Wątki, programowanie współbieżne
Klasy, pola, obiekty, metody. Modyfikatory dostępu, hermetyzacja
Programowanie Obiektowe – Wykład 2
Klasy wewnętrzne. Praktyka użycia interfejsów i klas wewnętrznych
Programowanie obiektowe – zastosowanie języka Java SE
Założenia projektowe Javy
Zapis prezentacji:

Bartosz Walter <Bartek.Walter@man.poznan.pl> Inżynieria oprogramowania Lecture XXX JavaTM – część II Bartosz Walter <Bartek.Walter@man.poznan.pl>

Klasy, obiekty, interfejsy Pola i metody Wyjątki Przegląd bibliotek Plan Java i JVM Typy danych Klasy, obiekty, interfejsy Pola i metody Wyjątki Przegląd bibliotek

Błędy w programach W czasie wykonywania kodu mogą pojawić się różne błędy problemy ze swoim stanem wewnętrznym po wywołaniu metody (niezgodności wartości zmiennych instancyjnych) błąd w danych przekazanych metodzie (np wartość null) błąd realizacji jakiejś operacji (błąd operacji plikowej, błąd sieciowy, brak zasobu etc.) naruszenie podstawowych zasad kontraktu metody

Kody błędu Różne sposoby kontroli błędów w programach ale zmienna globalna int errno zwracanie kodu błędu z metody (0 == OK) ale można zignorować sprawdzając, trzeba wiedzieć czego szukać sprawdzanie wyczerpujące powoduje zaciemnienie kodu trzeba znać wszystkie możliwe przyczyny błędów

Wyjątki Wyjątek jest zgłaszany w razie wystąpienia nieoczekiwanego błędu. Wyjątek ten może być wychwycony przez klauzulę, która została zarejestrowana wcześniej. Jeśli wyjątek nie zostaje wychwycony, to zostaje on obsłużony przez domyślną procedurę obsługi, która zwykle wypisuje komunikat na temat miejsca, gdzie dany wyjątek został zgłoszony.

Wyjątki try { // niebezpieczna operacja } catch (Exception1 ex) { // jeżeli to wyjątek typu Exception1, to tutaj próbujemy z niej się wydostać } catch (Exception2 ex) { // jeżeli Exception2 – to tutaj }

Throw vs. throws Do zgłaszania wyjątków służy klauzula throw, która wymaga podania obiektu reprezentującego wyjątek. Wyjątki kontrolowane, zgłoszone przez daną metodę, podaje się w klauzuli throws w postaci list oddzielonych przecinkami (ściśle pilnowane).

Throw vs. throws public int Fib(int no) throws IllegalArgumentException { if (no < 0) { throw new IllegalArgumentException(„Liczba mniejsza od 0”); } else { if (no < 2) { return 1; return Fib(no – 2) + Fib (no – 1); }

Obsługa wyjątków Co można zrobić z wyjątkiem? wychwycić i obsłużyć wychwycić i przekształcić na inny wyjątek zadeklarowany w klauzuli naszej metody (exception chaining) wymienić ten wyjątek w klauzuli throws naszej metody i pozwolić na jego propagację do miejsca wywołania naszej metody, nie zajmując się jego obsługą (chyba że w klauzuli finally)

Klauzula finally try { // niebezpieczna operacja } catch (Exception1 ex) { // jeżeli to wyjątek typu Exception1, to tutaj próbujemy z niej się wydostać } catch (Exception2 ex) { // jeżeli Exception2 – to tutaj } finally { // wykona się ZAWSZE po try lub catch, niezależnie czy wyjątek się pojawi, czy nie. }

Klauzula finally Kod, który może generować wyjątek umieszczamy w bloku try. Po bloku try występują klauzule catch, które są przeszukiwane po wystąpieniu wyjątku w bloku try w celu rozpoznania wyjątku. Jeśli wyjątek zostanie rozpoznany zostaje on wyłapany przez catch i wykonywane są instrukje przeyporządkowane danej klauzuli catch. Jeśli wyjątek nie zostanie rozpoznany przez żadną klauzulę catch jest on propagowany na zewnątrz bloku try. Po bloku try i klauzulach catch może występować klauzula finally. Jeśli występuje, to jest ona wykonywana zawsze po wszystkich czynnościach związanych z obsługą klauzul catch niezależnie od tego, czy wyjątek został wygenerownay i wychwycony, czy nie wychwycony, czy blok try zakończył się w wyniku przepływu sterowania, czy też w wyniku działania instrukcji break czy continue.

Wyjątki sprawdzane i niesprawdzane W Javie istnieją dwa rodzaje wyjątków sprawdzane (ang. checked exceptions) - kompilator jest w stanie sprawdzić, że każda metoda zgłasza tylko te wyjątki, które są jawnie wymienione w jej deklaracji. niesprawdzane (ang. uncheckcked exceptions) - standardowe wyjątki zgłaszane przez system wykonawczy (są podklasami klas RuntimeException i Error). Każda metoda może je zgłosić i nie musi to być uwzględnione w jej kontrakcie.

Hierarchia wyjątków w Javie Object Throwable Error Exception RuntimeException MyAppException MyRunException

Praktyczne metody wyjątków String getMessage() - zwraca napis podany kontruktorowi wyjątku Exception String toString() - zwraca napis reprezentujący nazwę wyjątku (klasy wyjątku) void printStackTrace() - wypisuje na strumień błędów tzw. call stack trace czyli sekwencję metod, która została wywołana do momentu wyrzucenia wyjątku java.lang.Throwable  at boo.hoo.StackTrace.bar(StackTrace.java:223)  at boo.hoo.StackTrace.foo(StackTrace.java:218)  at boo.hoo.StackTrace.main(StackTrace.java:54)

Rady nie rzucać wyjątków, gdy można im zapobiec np. iterowanie po tablicy, aż skończą się jej elementy jeżeli to możliwe, tworzyć zawsze nowe wyjątki w celu ich zgłoszenia throw new Exception() przechwytywać możliwie najbardziej szczegółowe wyjątki catch (Exception ex)  catch (SQLException ex) dla sytuacji błędnych związanych z logiką aplikacji stosować wyjątki sprawdzane, dla błędów, których aplikacja nie może przewidzieć - niesprawdzane NotDebitAccountException vs. FileNotFoundException

Podsumowanie Wyjątki są obiektowym sposobem na obsługę błędów W Javie są dwa rodzaje wyjątków: sprawdzane i niesprawdzane Wyjątków nie można przeoczyć, można je przechwycić i obsłużyć

Lektura http://www.javaworld.com/javaworld/ jw-07-1998/jw-07-exceptions.html http://java.sun.com/docs/books/tutorial/ essential/exceptions/ http://www.javaworld.com/javaworld/ javatips/jw-javatip124.html http://java.sun.com/developer/ technicalArticles/Programming/Stacktrace/

Q & A ?