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