Java
(3)
Plan
wykª
adu
◮
obsªuga wyj¡tk ó
w
◮
w
¡tki
Obsªuga wyj¡tk ó
w
(1)
◮
sytua ja
wyj¡tk o
w
a
(ang.
ex eption)
to
p
roblem uniemo»liwiaj¡ y
wyk
onanie danej
meto
dy
lub
bloku
◮
wyj¡tki s¡
naj z± iej
u»yw
ane
do
obsªugi sytua ji
a
w
a
ryjny h
◮
na
me hanizm
obsªugi wyj¡tk ó
w
skª
adaj¡
si
dwie
op
era je
wyrzu enie
wyj¡tku p
rzek
azanie p
oza
aktualny k
ontekst o
dp
o
wiedniego obiektu wyj¡tku obsªuga wyj¡tku p
rze hwy enie
wyj¡tku i
wyk
onanie p
ewny h
zynno± i
(p
ro
edura
obsªugi wyj¡tku)
◮
w
p
rzypadku wyrzu enia
wyj¡tku stero
w
anie
p
rzenosi si
do
fragmentu k
o
du
o
dp
o
wiedzialnego za
obsªug
danego wyj¡tku (nie
ma
p
o
wrotu
do
miejs a
rzu enia
wyj¡tku)
Obsªuga wyj¡tk ó
w
(2)
me hanizm
◮
wyrzu enie
wyj¡tku w
meto
dzie
f
k
o« zy
dziaª
anie
meto
dy
f
◮
′
stero
w
anie
p
rzenosi si
do
meto
dy
f
,
w
któ
rej
meto
da
f
zostaª
a
wyw
oª
ana,
a
dokª
adniej do
miejs a
wyª
oª
ania
meto
dy
f
◮
je±li
miejs e
to
jest
w
bloku
p
rób
(try), nastpuje obsªuga wyj¡tku
◮
′′
je±li
nie,
wyj¡tek jest
p
rzek
azyw
any
dalej
do
meto
dy
f
,
w
′
któ
rej
zostaª
a
wyw
oª
ana
meto
da
f
◮
i.t.d.
◮
je±li
»adna
z
k
olejny h
meto
d
na
dro
dze
wyj¡tku nie
obsªu»y go,
wyj¡tek jest
obsªugiw any
p
rzez
interp reter
Javy
Obsªuga wyj¡tk ó
w
p
rzykª
ady
patrz
plik
W
yjatki0.java patrz
plik
W
yjatki1.java patrz
plik
W
yjatki2.java patrz
plik
StosT
est.java
Obsªuga wyj¡tk ó
w
zasady k
o
rzystania z
me hanizmu
obsªugi wyj¡tk ó
w
◮
okre±lenie obsza
ru,
gdzie
sp
o
dziew
ane
jest
wyst¡pienie wyj¡tku: blok
try
◮
okre±lenie fragmentu k
o
du
o
dp
o
wiadaj¡ ego
za
obsªug
wyj¡tku: blok
at h
◮
wyrzu enie
wyj¡tku: instruk ja
throw
◮
wsk
azanie (ob
o
w
o
wi¡zk
o
w
e),
»e
dana
meto
da
mo»e
wyrzu a¢
wyj¡tki:
sª
o
w
o
throws p
o
nazwie meto
dy
W
yj¡tki
.d.
◮
zdenio w
anie
wyj¡tku o
db
yw
a
si
p
op
rzez
dziedzi zenie
p
o
istniej¡ ym
t
ypie
wyj¡tk ó
w
wyw
o
dz¡ ym
si
z
t
ypu
Throwable; naj z± iej
wyk
o
rzyst
yw
anym
rep
rezentantem tego
t
ypu
jest
klasa
Ex eption
◮
p
o
d zas
obsªugi wyj¡tk ó
w
mo»liw e
jest
u»yw
anie
meto
d
z
klasy
Thro
w
able
(np.
getMessage() zwra aj¡ ej
k
omunik at
p
rzenoszony p
rzez
wyj¡tek).
◮
p
rzykª
ado
w
e
wyj¡tki standa rdo
w
e
(p
redenio w
ane)
w
Javie
◮
NullPointerEx e
pti
on
-
wyj¡tek zgª
aszany automat y znie
p
o
d zas
o
dw
oª
ania
do
nie
zaini jo
w
anej
referen ji,
◮
ArrayIndexOutOf Bou
nd
sEx
e
pt
ion
p
rzekro zenie
rozmia ru
tabli y
◮
wyj¡tki automaty znie
zgªaszane przez
Jav
zgrupowane s¡
pod
klas¡
bazow¡
RuntimeEx eptio
n
W¡tki
◮
w
jzyku Java
p
rogram mo»na
zo
rganizo w
a¢
w
taki
sp
osób,
»eb
y
wyk
onyw
aª
kilk
a
zynno± i
jedno
ze±nie
◮
k
o
d
o
dp
o
wiedzialny za
wyk
onyw
anie
k
a»dej
z
t
y h
zynno± i
stano
wi
tre±¢
jednego w
¡tku
◮
p
rogram mo»e
uru homi¢
wiele
w
¡tk
ó
w
W¡tki
p
o
dsta
w
o
w
e
wª
asno± i
◮
nad
w
¡tk
ami
panujemy z
p
oziomu p
rogramu, nie
z
p
oziomu systemu op
era yjnego
◮
nazwy
sp
oza
w
¡tku
s¡
w
nim
wido
zne
na
no
rmalny h
zasada h
(wsp
óª
dzielenie dany h)
W¡tki
p
o
dsta
w
o
w
e
info
rma je
◮
w
¡tek
jest
klas¡
dziedzi z¡ ¡
z
klasy
Thread (z
pakietu java.lang)
◮
w
¡tek
uru hamia
meto
da
start()
◮
dziaª
anie
w
¡tku
deniuje meto
da
run(); meto
da
ta
mo»e
b
y¢
meto
d¡
w
¡tku
(obiektu rep
rezentuja ego
w
¡tek,
dziedzi z¡ ego
z
klasy
Thread) lub
meto
d¡
innego obiektu
-
implementuj¡ ego
interfejs Runnable, do
któ
rego
referen j
p
rzek
azujemy w
¡tk
o
wi
◮
instruk ja
return wyk
onana
w
ewn¡trz meto
dy
run()
k
o« zy
dziaª
anie
w
¡tku
W¡tki
wyb
rane
meto
dy
klasy
Thread
◮
Thread(String s)
-
k
onstrukto r
z
nadaniem nazwy
◮
run()
◮
start()
◮
getName()
-
zwra a
nazw
◮
sleep(long li zbamilisekund)
-
wstrzymanie wyk
onania
◮
stop()
-
zatrzymanie
◮
suspend()
-
za
wieszenie dziaª
ania
◮
resume()
-
wzno
wienie dziaª
ania
za
wieszonego w
¡tku
◮
yield()
-
o
ddanie p
ozostaª
ej
z± i
p
rzydzielonego p
rzez
system op
era yjny
kw
antu
zasu
innym
w
¡tk
om
W¡tki
Meto
dy
interfejsu Runnable
◮
run()
W¡tki
p
rzykª
ady
◮
implementa ja
w
¡tku
p
rzez
zdenio w
anie
klasy
p
otomnej o
d
Thread patrz
plik
T
estW
atku.java
◮
implementa ja
w
¡tku
p
rzez
implementa j
interfejsu Runnable patrz
plik
T
estW
atku1.java