You are on page 1of 14

Qun l ngoi l

Bi 7 - Qun l ngoi l

Ni dung
Ngoi l X l ngoi l

Lp Throwable
u im ca ngoi l

Bi 7 - Qun l ngoi l

Ngoi l
Ngoi l (exception), l li c th pht sinh trong qu trnh thc hin

chng trnh.
Mi ngoi l cng c m hnh ha bi mt i tng thuc lp

Exception.
V d, cc thao tc sau u sinh ngoi l: truy cp mng v tr -1, chia

cho 0.

Bi 7 - Qun l ngoi l

Ngoi l
Khi xy ra ngoi l trong mt phng thc, phng thc to ra mt

i tng ngoi l v chuyn n cho h thng.


i tng ngoi l cha cc thng tin v li: kiu li, trng thi ca

chng trnh khi xy ra li.


Vic to ra i tng li v chuyn n cho h thng c gi l nm

ngoi l.

Bi 7 - Qun l ngoi l

Ngoi l
Khi mt ngoi l c nm ra, h thng s tm on m c nhim v

x l ngoi l.
Lp trnh vin cn d kin trc cc ngoi l c th xy ra v cung cp nhng

m x l ph hp.
V d, chng trnh ly d liu ngi dng nhp vo mt JTextField vi k vng

l mt s nguyn dng, nhng ngi dng nhp sai (nhp s m, nhp chui k t...)
on m x l ngoi l c gi l b x l ngoi l (exception

handler).
Bi 7 - Qun l ngoi l

X l ngoi l
B x l ngoi l c th nm

phng thc khc phng thc nm ngoi l.


Khi xy ra ngoi l, h thng s tm

Phng thc nm ngoi l Phng thc khng cha b x l ngoi l Phng thc cha b x l ngoi l
Gi phng thc

b x l ngoi l bng cch ln theo ngn xp cha cc li gi phng thc, xut pht t phng thc nm ngoi l.
Tm b x l ngoi l thch hp
6
Bi 7 - Qun l ngoi l

main()

X l ngoi l
B x l ngoi l c 3 thnh phn
Khi try, (cc) khi catch, khi finally

Khi try cha cc lnh c th sinh ngoi l. Cc khi catch i ngay sau khi try cha cc lnh x l ngoi l.
V khi try c th sinh nhiu kiu ngoi l khc nhau nn c th c nhiu khi catch.

Khi finally cha cc lnh lun c thc hin khi thc hin ht cc lnh

trong khi try.

Bi 7 - Qun l ngoi l

X l ngoi l
Trong chng trnh lit k cc s nguyn t, trng vn bn ch ngi

dng nhp vo mt s nguyn dng n.


Nu ngi dng nhp chui k t khng chuyn c thnh s, v d

xyz?
Xy ra ngoi l kiu NumberFormatException

Chng trnh cn x l ngoi l ny.

Bi 7 - Qun l ngoi l

X l ngoi l
@Override public void actionPerformed(ActionEvent event) { int n = 0; try { n = Integer.parseInt(nTextField.getText()); } catch (NumberFormatException e) { JOptionPane.showMessageDialog(PrimeNumberFrame.this, "Number format error!", "Error", JOptionPane.ERROR_MESSAGE); return; } String primes = pn.listPrimeNumbers(n); resultTextArea.setText(primes); Bi 7 - Qun l ngoi l }

X l ngoi l
i khi phng thc cha on m c th nm ngoi l khng thc

hin x l ngoi l.
Khi , n cn c khai bo cc kiu ngoi l c kh nng sinh ra

phng thc khc s dng n thc hin x l chng.


Khai bo:
ArrayIndexOutOfBoundsException { // do something Phng thc ny c th sinh hai kiu ngoi l. public void writeList() throws IOException,

}
10
Bi 7 - Qun l ngoi l

Khng cn c cc khi try, catch x l cc ngoi l.

X l ngoi l
public void useWriteList() { try { writeList();

} catch (IOException e) {
// do something

X l ngoi l IOException

} catch (ArrayIndexOutOfBoundsException e) {

// do something
} } X l ngoi l ArrayIndexOutOfBoundsException

11

Bi 7 - Qun l ngoi l

Nm ngoi l
Mi m ngun u c th nm ngoi l bng lnh throw. Java cung cp nhiu lp ngoi l khc nhau, tt c u l lp con ca

lp Throwable.
C php: throw someThrowableObject; Trong , someThrowableObject l i tng thuc mt lp con ca

lp Throwable.

12

Bi 7 - Qun l ngoi l

Lp Throwable
Object

Throwable

Error

Exception RuntimeException
NullPointerException, ArithmeticException

IllegalAccessException, NegativeArraySizeException

13

Bi 7 - Qun l ngoi l

u im ca ngoi l
Vic s dng ngoi l c mt s u im sau: Tch cc on m x l li ra khi cc on m thng thng.

Lan truyn li ngc theo cc li gi phng thc. Ch nhng

phng thc quan tm ti loi li no mi phi x l li .


Nhm cc kiu li khc nhau thnh cc khi catch. Nhng u im ny gip chng trnh d c, d pht trin hn.

14

Bi 7 - Qun l ngoi l

You might also like