Java Obsluga wyjatkow, usuwanie bledow i testowanie kodu.pdf

(576 KB) Pobierz
Java. Obsługa wyjątków, usuwanie błędów i testowanie kodu
IDZ DO
PRZYK£ADOW Y ROZDZIA£
SPIS TRECI
Java. Obs³uga wyj¹tków,
usuwanie b³êdów
i testowanie kodu
KATALOG KSI¥¯EK
KATALOG ONLINE
Autor: Stephen Stelting
T³umaczenie: Adam Bochenek
ISBN: 83-7361-796-5
Tytu³ orygina³ u: Robust Java
Format: B5, stron: 376
ZAMÓW DRUKOWANY KATALOG
TWÓJ KOSZYK
W ka¿dej aplikacji mog¹ wyst¹piæ b³êdy.
Przygotuj siê na to pisz¹c odpowiedni¹ obs³ugê wyj¹tków
• Poznaj techniki programowania, dziêki którym Twoje aplikacje
stan¹ siê odporne na b³êdy
• Naucz siê przewidywaæ b³êdy i zapobiegaæ ich wystêpowaniu
• Zabezpiecz aplikacje przez skutkami wyst¹pienia b³êdów stosuj¹c
odpowiednie wzorce projektowe
¯aden kod nie jest idealny — nawet najbardziej dowiadczony programista pope³nia
b³êdy. Tym, co w takich przypadkach wyró¿nia dowiadczonego programistê jest fakt,
¿e jego aplikacje posiadaj¹ mechanizmy pozwalaj¹ce na obs³ugê tych b³êdów.
Dziêki nim program nie zawiesi siê ani nie „pogubi” ¿adnych danych. Oczywicie, aby
napisaæ odpowiedni¹ obs³ugê wyj¹tków, nale¿y poznaæ ich typy oraz mechanizmy ich
powstawania. Niezbêdna jest równie¿ znajomoæ wzorców projektowych oraz narzêdzi
do testowania kodu.
W ksi¹¿ce „Java. Obs³uga wyj¹tków, usuwanie b³êdów i testowanie kodu” znajdziesz
wszystkie te informacje. Dowiesz siê, jak zaimplementowaæ obs³ugê wyj¹tków
i poprawiæ jakoæ kodu ród³owego. Poznasz modele wyj¹tków i nauczysz siê zarz¹dzaæ
mechanizmami ich obs³ugi na poziomie aplikacji i pojedynczych modu³ów. Przeczytasz
tu tak¿e o wzorach projektowych zapewniaj¹cych prawid³ow¹ obs³ugê wyj¹tków.
• Koncepcje obs³ugi wyj¹tków
• Obs³uga wyj¹tków w aplikacjach wielow¹tkowych
• Przyczyny wystêpowania wyj¹tków w ró¿nych elementach jêzyka Java
• Programowanie rozproszone w Javie
• Wyj¹tki w aplikacjach J2EE
• Wzorce projektowe
• Testowanie kodu i usuwanie b³êdów
Po przeczytaniu tej ksi¹¿ki Twoja wiedza pozwoli Ci na podejmowanie odpowiednich
decyzje dotycz¹ce architektury aplikacji i odpowiadaj¹cego jej modelu wyj¹tków.
DODAJ DO KOSZYKA
CENNIK I INFORMACJE
ZAMÓW INFORMACJE
O NOWOCIACH
ZAMÓW CENNIK
CZYTELNIA
FRAGMENTY KSI¥¯EK ONLINE
Wydawnictwo Helion
ul. Chopina 6
44-100 Gliwice
tel. (32)230-98-63
e-mail: helion@helion.pl
400254055.001.png 400254055.002.png 400254055.003.png 400254055.004.png
 
Spis treci
Wstp .........................................................................................................................................................11
Cz I Podstawy obsługi wyjtków
17
Rozdział 1. Obsługa wyjtków. Wprowadzenie....................................................................................... 19
Wstp........................................................................................................................19
Pojcie wyjtku ...........................................................................................................22
Hierarchia klas reprezentujcych wyjtki ........................................................................24
Opcje zwizane z przechwytywaniem oraz deklaracj wyjtków..........................................25
Przechwytywanie i obsługa wyjtków: bloki try, catch i finally.......................................26
Reguły dotyczce stosowania bloków try-catch-finally..................................................27
Deklarowanie metod zgłaszajcych wyjtki................................................................28
Reguły dotyczce deklarowania metod zgłaszajcych wyjtki .......................................28
Wyjtki kontrolowane i niekontrolowane.........................................................................28
Podstawowe własno/ci ka0dego wyjtku ........................................................................29
Podsumowanie ...........................................................................................................31
Rozdział 2. Obsługa wyjtków. Techniki i praktyka...............................................................................33
Wstp........................................................................................................................33
Kiedy przechwytywa3 wyjtki, a kiedy je deklarowa3?.......................................................34
Typowe sposoby obsługi wyjtków.................................................................................35
1. Zapis błdu lub zwizanej z nim informacji do dziennika .........................................36
2. Zwrócenie si do u0ytkownika z pro/b o podjcie odpowiedniej decyzji ........................38
3. U0ycie warto/ci domy/lnych lub alternatywnych .....................................................39
4. Przekazanie sterowania do innej cz/ci aplikacji....................................................40
5. Konwersja wyjtku do innej postaci......................................................................40
6. Zignorowanie problemu.......................................................................................41
7. Powtórzenie operacji...........................................................................................41
8. Wywołanie operacji alternatywnej.........................................................................42
9. Przygotowanie aplikacji do zamknicia..................................................................42
Co nale0y, a czego nie wolno robi3 w ramach obsługi wyjtków?.......................................43
Dobre praktyki ............................................................................................................43
1. Obsługuj wyjtki zawsze, gdy jest to mo0liwe.........................................................43
2. Obsługa wyjtku powinna /ci/le zale0e3 od jego typu .............................................43
 
6 Java. Obsługa wyjtków, usuwanie błdów i testowanie kodu
3. Zapisuj do dziennika te wyjtki, które mog mie3 wpływ na działanie aplikacji...........44
4. Dokonuj konwersji wyjtków, je/li tylko dojdziesz do wniosku,
0e lepiej reprezentuj one istot problemu............................................................44
Czego robi3 nie nale0y?................................................................................................44
1. Nie ignoruj wyjtków, chyba 0e masz absolutn pewno/3,
i0 jest to niegro;ne dla działania aplikacji .............................................................44
2. Nie dopuszczaj do zbyt ogólnego traktowania wyjtków...........................................45
3. Nie dokonuj konwersji wyjtku polegajcej na zmianie typu szczegółowego
na ogólny (chyba 0e przechowasz kontekst zdarzenia w inny sposób).......................46
4. Wyjtków lepiej unika3, ni0 je obsługiwa3..............................................................47
Rozdział 3. Zaawansowane koncepcje obsługi wyjtków .....................................................................49
Wstp........................................................................................................................49
Tworzenie własnych wyjtków .......................................................................................50
1. Definicja klasy wyjtku........................................................................................51
2. Deklaracja wyjtku przez metody, które mog by3 potencjalnym ;ródłem błdu .........52
3. Znalezienie tych miejsc, które s bezpo/redni przyczyn wystpienia błdu,
wygenerowanie w nich wyjtków i wyrzucenie ich za pomoc instrukcji throw.............52
Ła?cuchy wyjtków......................................................................................................54
Lokalizacja wyjtków....................................................................................................55
1. Stworzenie klasy dziedziczcej po ResourceBundle, która bdzie przechowywała
opis wyjtku ......................................................................................................56
2. Zdefiniowanie klasy odpowiadajcej danemu jzykowi ............................................57
3. Definicja klasy wyjtku, w której pokrywamy metod getLocalizedMessage...............57
Wyjtki a pokrywanie metod.........................................................................................59
Deklaracja wyjtków w interfejsach i klasach abstrakcyjnych ............................................60
Stos wywoła? wyjtku ..................................................................................................61
Wyjtki z perspektywy kodu po/redniego........................................................................64
Rozdział 4. Obsługa wyjtków w aplikacjach wielowtkowych............................................................69
Wstp........................................................................................................................69
Kiedy nale0y dzieli3 program na wtki? .....................................................................70
Wyjtki w systemach wielowtkowych............................................................................71
Wyjtki w synchronizowanych blokach kodu....................................................................72
Praca wielowtkowa a ryzyko wystpienia wyjtku ...........................................................74
Wyjtki zwizane z komunikowaniem si wtków.............................................................75
Zakleszczenie.............................................................................................................78
ThreadDeath...............................................................................................................79
Rozdział 5. Zapis do dziennika i asercje.................................................................................................. 81
Wstp........................................................................................................................81
Wprowadzenie do Logging API.......................................................................................81
Kiedy stosowa3 Logging API?........................................................................................82
Struktura Logging API ..................................................................................................82
Szczegóły dotyczce u0ywania biblioteki.........................................................................83
Konfigurowanie dziennika.............................................................................................88
Przykład pierwszy: Proste u0ycie domy/lnego obiektu Logger.......................................88
Przykład drugi: U0ycie i konfiguracja kilku obiektów typu Logger...................................89
Przykład trzeci: Dziennik rozproszony........................................................................90
Asercje ......................................................................................................................91
U0ywanie asercji ....................................................................................................92
Jak i kiedy korzysta3 z asercji? ................................................................................92
Spis tre-ci 7
Cz II Planowanie obsługi wyjtków
95
Rozdział 6. Planowanie obsługi wyjtków ..............................................................................................97
Wstp........................................................................................................................97
Zasady dobrego projektowania obiektowego...................................................................98
Projektowanie z uwzgldnieniem błdów .................................................................103
Etap 1. Identyfikacja przypadku u0ycia....................................................................104
Etap 2. Precyzyjny opis procesu i poszczególnych jego składników.............................105
Etap 3. Identyfikacja potencjalnych błdów i ocena ich ryzyka ...................................106
Etap 4. Wskazywanie miejsc wystpienia potencjalnych błdów w ramach operacji......110
Etap 5. Przygotowanie strategii obsługi błdów........................................................111
Projektowanie z my/l o łatwiejszym zarzdzaniu — korzy/ci i wady...........................113
Identyfikacja błdów.............................................................................................114
Podsumowanie .........................................................................................................115
Rozdział 7. Wyjtki a podstawowe elementy jzyka Java....................................................................117
Wstp......................................................................................................................117
Typy podstawowe ......................................................................................................118
Wprowadzenie .....................................................................................................118
Stosowanie .........................................................................................................118
Potencjalne problemy ...........................................................................................119
Ogólne zalecenia..................................................................................................121
Klasa Object i obiekty tego typu..................................................................................122
Wprowadzenie .....................................................................................................122
Potencjalne problemy ...........................................................................................122
Tablice.....................................................................................................................128
1. Indeksowanie ..................................................................................................129
2. Wielko/3 tablicy...............................................................................................129
3. Typ elementów tablicy.......................................................................................129
Interfejsy pakietu java.lang.........................................................................................130
Klasy String i StringBuffer ..........................................................................................131
Klasa String ........................................................................................................132
Klasa StringBuffer................................................................................................132
Klasy BigDecimal i BigInteger .....................................................................................132
Klasy opakowujce....................................................................................................133
Rozdział 8. Kolekcje i operacje wej-cia-wyj-cia..................................................................................135
Wstp......................................................................................................................135
Biblioteka obsługi kolekcji..........................................................................................135
Wprowadzenie .....................................................................................................135
Korzystanie z kolekcji ...........................................................................................136
Problemy i wyjtki typowe dla kolekcji.....................................................................141
System wej/cia-wyj/cia..............................................................................................144
Problemy typowe dla operacji wej/cia-wyj/cia ..........................................................146
Błdy i wyjtki w klasach wej/cia-wyj/cia......................................................................148
Problemy ogólne ..................................................................................................148
Problemy dotyczce strumieni okre/lonego typu ......................................................149
Biblioteka New I/O (NIO)............................................................................................156
Wyjtki w New I/O API................................................................................................158
Bufory.................................................................................................................158
Zestawy znaków...................................................................................................159
Kanały ................................................................................................................160
Przełczniki .........................................................................................................164
8 Java. Obsługa wyjtków, usuwanie błdów i testowanie kodu
Rozdział 9. Programowanie rozproszone w Javie ..............................................................................167
Wstp......................................................................................................................167
Podstawy komunikacji midzy aplikacjami....................................................................168
Modele komunikacji w Javie ..................................................................................170
Dodatkowe zagadnienia zwizane z prac rozproszon.............................................170
Model obsługi wyjtków ........................................................................................172
Typowe problemy .................................................................................................173
RMI — zdalne wywoływanie metod..............................................................................174
Model komunikacyjny RMI.....................................................................................174
Typowe zagadnienia zwizane z u0ywaniem RMI ......................................................175
Model wyjtków RMI.............................................................................................178
Java Naming and Directory Interface, JNDI ...................................................................184
Typowe zagadnienia zwizane z JNDI......................................................................185
Model wyjtków JNDI............................................................................................186
Java Database Connectivity, JDBC ..............................................................................189
Wyjtki w JDBC....................................................................................................189
Ogólne zagadnienia dotyczce obsługi baz danych...................................................191
Cykl 0ycia aplikacji korzystajcej z JDBC..................................................................193
Podsumowanie .........................................................................................................198
Rozdział 10. J2EE.....................................................................................................................................199
Wstp......................................................................................................................199
Podstawowy model aplikacji J2EE ...............................................................................200
Model aplikacji J2EE ............................................................................................202
Wyjtki w J2EE.....................................................................................................203
Warstwa klienta ........................................................................................................204
Warstwa aplikacji sieciowej ........................................................................................206
Deklaratywna obsługa błdów................................................................................207
Komponenty aplikacji sieciowej..............................................................................208
Serwlety i filtry: obsługa wyjtków na poziomie programu..........................................209
Model wyjtków serwletów i filtrów.........................................................................210
Typowe zagadnienia i ryzyko zwizane z u0ywaniem serwletów...................................211
Model wyjtków JSP .............................................................................................215
Bezpo/rednie przekierowanie błdów w JSP............................................................215
Sposób obsługi wyjtków w JSP.............................................................................216
Błdy zwizane z translacj i uruchamianiem stron JSP............................................217
Biblioteki własnych znaczników..............................................................................217
Warstwa komponentów EJB........................................................................................218
Standardowe metody EJB......................................................................................219
Ogólne kwestie zwizane z obsług EJB..................................................................221
Zagadnienia zwizane z typem komponentu ............................................................223
Model wyjtków EJB .............................................................................................225
Zarzdzanie cyklem 0ycia komponentów. Metody wywoływane przez klienta ................227
Metody komponentu wywoływane przez kontener.....................................................230
Wyjtki z punktu widzenia kontenera ......................................................................231
Obsługa transakcji.....................................................................................................232
J2EE i obsługa wyjtków — kwestie ogólne..................................................................236
Czynniki, które nale0y rozwa0y3 podczas obsługi wyjtków w J2EE...................................237
Obsługa dziennika................................................................................................237
Koszty zwizane ze zgłaszaniem wyjtków...............................................................238
Obci0enie sieci...................................................................................................239
Inne zalecenia dotyczce systemów J2EE ...............................................................239
Zgłoś jeśli naruszono regulamin