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
và
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
ệ
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
ế
ạ
ắ
ắ
ề ồ
ự
ệ
ươ
ệ
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.
ả