THINK JAVA: CÁCH SUY NGHĨ NHƯ NHÀ KHOA HỌC MÁY TÍNH - Trang 163

Ch ng h n:

while

(x > 0 && y < 0) {

// thao tác gì đó với x

// thao tác gì đó với y

System.out.println(

"x: "

+ x);

System.out.println(

"y: "

+ y);

System.out.println(

"điều kiện: "

+ (x > 0 && y < 0));

}

Bây gi khi ch y ch

ng trình, b n s th y ba dòng k t qu v i m i l n ch y qua vòng l p. L n cu i

ươ

ạ ẽ ấ

ế

ả ớ

ỗ ầ

cùng ch y qua vòng l p đi u ki n s ph i là

ệ ẽ

false

. N u vòng l p ti p t c ch y, b n s nhìn đ

c các giá

ế

ế ụ

ạ ẽ

ượ

tr c a

ị ủ

x

y

, và có th hình dung đ

c t i sao chúng không đ

c c p nh t đúng.

ượ ạ

ượ ậ

Đ QUY VÔ H N

Trong nhi u tr

ng h p, m t vòng l p đ quy s khi n ch

ng trình phát bi t

ườ

ế

ươ

l

ệ StackOverflowException. Nh ng n u ch ng trình ch m ch p có th nó s t n nhi u th i gian đ b

ư

ế

ươ

ẽ ố

ể ị

đ y ngăn x p.

ế

N u b n nghi ng r ng m t hàm ho c ph

ng th c nào đó gây ra đ quy vô h n, hãy b t đàu ki m tra

ế

ờ ằ

ươ

đ ch c r ng có m t tr

ng h p c s . Nói cách khác, c n ph i có đi u ki n nào đó đ khi n cho hàm

ể ắ ằ

ườ

ợ ơ ở

ế

ho c ph

ng th c tr v mà không g i đ quy n a. N u không, b n c n ph i nghĩ l i thu t toán và tìm

ươ

ả ề

ọ ệ

ế

ạ ầ

ra m t tr

ng h p c s .

ườ

ợ ơ ở

N u có m t tr

ng h p c s nh ng ch

ng trình d

ng nh không đ t đ n đó, thì hãy thêm câu

ế

ườ

ợ ơ ở

ư

ươ

ườ

ư

ạ ế

l nh

print

vào đi m đ u c a hàm ho c ph

ng th c đ in ra các tham bi n. Bây gi khi ch y ch

ng

ầ ủ

ươ

ứ ể

ế

ươ

trình, b n s th y m t ít dòng k t qu m i l n hàm ho c ph

ng th c đ

c g i đ n, và s th y giá tr

ạ ẽ ấ

ế

ả ỗ ầ

ươ

ứ ượ ọ ế

ẽ ấ

các tham s . N u tham s không thay đ i v i xu h

ng v tr

ng h p c s , b n s th y đ

c t i sao.

ố ế

ổ ớ

ướ

ề ườ

ợ ơ ở ạ ẽ ấ

ượ ạ

LU NG TH C THI

N u b n không ch c ch n v lu ng th c hi n trong ch

ng trình, hãy thêm các câu l nh

ế

ề ồ

ươ

print

vào

đi m đ u c a m i hàm v i thông báo ki u nh “b t đ u ph

ng th c

ầ ủ

ư ắ ầ

ươ

foo

”, trong đó

foo

là tên ph

ng

ươ

th c.

Bây gi khi ch y ch

ng trình, nó s in ra m t d u v t c a m i ph

ng th c khi đ

c kích ho t đ n.

ươ

ộ ấ

ế ủ

ươ

ượ

ạ ế

B n cũng có th in ra nh ng đ i s mà t ng ph

ng th c nh n đ

c. Khi ch y ch

ng trình, hãy ki m

ố ố

ươ

ượ

ươ

tra xem các giá tr này h p lý không, và ki m tra m t trong nh ng l i th

ng m c ph i nh t—cung c p

ườ

các đ i s sai th t .

ố ố

ứ ự

KHI CH Y CH

NG TRÌNH TÔI NH N Đ

C M T BI T L .

ƯƠ

ƯỢ

Khi có bi t l x y ra, Java s in m t thông báo trong đó có tên c a bi t l , dòng l nh có v n đ , và m t

ệ ệ ả

ệ ệ

l n d u v t trên ngăn x p (stack trace). B n thân cái l n v t này ch a thông tin v ph

ng th c

ế

ế

ế

ươ

ứ đang

đ

c ch y, và ph

ng th c kích ho t nó, r i ph

ng th c kích ho t ph

ng th c đó, và c nh v y.

ượ

ươ

ươ

ươ

ư ậ

B

c đ u tiên là ki m tra v trí trong ch

ng trình n i mà l i xu t hi n, đ ng th i th hình dung đi u gì

ướ ầ

ươ

ơ

đã x y ra.