1.3 G l i là gì?
ỡ ỗ
Vi c l p trình r t hay m c ph i l i. Vi c theo dõi, phân tích nguyên nhân gây ra l i đ
c g i là
ệ ậ
ấ
ắ
ả ỗ
ệ
ỗ ượ ọ
g l i
ỡ ỗ .
Có ba lo i l i có th xu t hi n trong ch
ng trình: l i cú pháp, l i ch y và l i ng nghĩa. Đ nhanh
ạ ỗ
ể
ấ
ệ
ươ
ỗ
ỗ
ạ
ỗ
ữ
ể
chóng tìm ra l i ta c n phân bi t đ
c chúng.
ỗ
ầ
ệ ượ
1.3.1 L I CÚ PHÁP
Ỗ
Trình biên d ch ch có th chuy n đ i đ
c ch
ng trình n u nh nó đúng đ n v cú pháp; còn n u
ị
ỉ
ể
ể
ổ ượ
ươ
ế
ư
ắ
ề
ế
không, vi c biên d ch s th t b i và b n s không ch y đ
c ch
ng trình.
ệ
ị
ẽ ấ ạ
ạ ẽ
ạ
ượ
ươ
Cú pháp nghĩa là c u trúc
ấ
c a ch
ng trình và các quy t c v c u trúc đó.
ủ
ươ
ắ ề ấ
Ch ng h n, trong ti ng Anh, m t câu vi t ph i b t đ u b ng ch in hoa và k t thúc b ng d u ch m. câu
ẳ
ạ
ế
ộ
ế
ả ắ ầ
ằ
ữ
ế
ằ
ấ
ấ
này có m t l i cú pháp. Và câu này cũng v y
ộ ỗ
ậ
Đa ph n ban đ c th
ng không đ tâm đ n m t s ít l i cú pháp, vì v y ta có th đ c th c a tác gi e e
ầ
ọ
ườ
ể
ế
ộ ố
ỗ
ậ
ể ọ
ơ ủ
ả
cummings mà không th t ra l i thông báo l i nào.
ố
ờ
ỗ
Các trình biên d ch thì không nh v y. Ch c n trong ch
ng trình có l i cú pháp b t c đâu, trình
ị
ư ậ
ỉ ầ
ươ
ỗ
ở ấ ứ
biên d ch s hi n th thông báo l i và k t thúc, và b n s không th ch y ch
ng trình.
ị
ẽ ể
ị
ỗ
ế
ạ ẽ
ể ạ
ươ
T h n n a là trong Java có nhi u quy t c cú pháp h n là trong ti ng Anh, và th
ng thì nh ng thông
ệ ơ
ữ
ề
ắ
ơ
ế
ườ
ữ
báo l i mà b n nh n đ
c t trình biên d ch đ u không giúp ích gì nhi u.
ỗ
ạ
ậ
ượ ừ
ị
ề
ề N u b n m i nh p môn l p
ế
ạ
ớ
ậ
ậ
trình đ
c vài tu n, r t có th b n ph i dành nhi u th i gian dò tìm l i. Khi kinh nghi m tăng d n lên,
ượ
ầ
ấ
ể ạ
ả
ề
ờ
ỗ
ệ
ầ
b n s tránh đ
c l i t t h n và n u m c thì cũng phát hi n ra l i nhanh h n.
ạ ẽ
ượ ỗ ố ơ
ế
ắ
ệ
ỗ
ơ
1.3.2 L I TH C THI
Ỗ
Ự
Lo i l i th hai là l i th c thi; chúng có tên nh v y b i vì ch xu t hi n khi ch
ng trình đã b t đ u
ạ ỗ
ứ
ỗ
ự
ư ậ ở
ỉ
ấ
ệ
ươ
ắ ầ
ch y. Trong Java, l i th c thi x y ra khi trình thông d ch đang ch y mã byte và có đi u gì đó tr c tr c.
ạ
ỗ
ự
ả
ị
ạ
ề
ụ
ặ
Java có xu h
ng là ngôn ng
ướ
ữ an toàn, theo nghĩa trình biên d ch s b t r t nhi u l i. Do v y l i th c
ị
ẽ ắ ấ
ề ỗ
ậ ỗ
ự
thi s hi m, đ c bi t là nh ng ch
ng trình đ n gi n.
ẽ ế
ặ
ệ
ở
ữ
ươ
ơ
ả
Trong Java, l i th c thi đ
c g i là
ỗ
ự
ượ ọ
bi t l
ệ ệ, và h u h t các môi tr ng l p trình, chúng xu t hi n d i
ở ầ
ế
ườ
ậ
ấ
ệ
ướ
hình th c c a s ho c h p tho i ghi rõ nh ng thông tin v tình tr ng đã di n ra và lúc đó thì ch
ng
ứ ủ ổ
ặ ộ
ạ
ữ
ề
ạ
ễ
ươ
trình đang th c hi n nh ng gì. Thông tin này r t có ích đ i v i vi c g l i.
ự
ệ
ữ
ấ
ố ớ
ệ ỡ ỗ
1.3.3 L I LOGIC VÀ NG NGHĨA
Ỗ
Ữ
Lo i l i th ba là
ạ ỗ
ứ
l i logic
ỗ
hay l i ng nghĩa
ỗ
ữ
. Trong tr
ng h p có l i ki u này, ch
ng trình s v n
ườ
ợ
ỗ
ể
ươ
ẽ ẫ
đ
c biên d ch và ch y mà không phát ra thông báo l i nào, nh ng s không th c hi n đúng yêu c u
ượ
ị
ạ
ỗ
ư
ẽ
ự
ệ
ầ
mong mu n, mà s cho k t qu khác. C th là th c hi n theo đúng nh ng câu l nh mà b n đã ch d n.
ố
ẽ
ế
ả
ụ ể
ự
ệ
ữ
ệ
ạ
ỉ ẫ
V n đ đây là ch
ng trình b n vi t s không đúng theo ý mu n c a b n. Ý nghĩa c a ch
ng trình b
ấ
ề ở
ươ
ạ
ế ẽ
ố ủ
ạ
ủ
ươ
ị
sai l ch. Vi c phát hi n các l i ng nghĩa đôi lúc r t khó vì b n c n ph i quay ng
c l i và nhìn vào k t
ệ
ệ
ệ
ỗ
ữ
ấ
ạ ầ
ả
ượ ạ
ế
qu c a ch
ng trình đ phán đoán xem b n thân ch
ng trình đã th c hi n nh ng gì.
ả ủ
ươ
ể
ả
ươ
ự
ệ
ữ
1.3.4 G L I TH NGHI M
Ỡ Ỗ
Ử
Ệ
M t trong nh ng kĩ năng quan tr ng nh t mà b n s h c đ
c, đó là g l i. M c dù đôi khi b v p váp,
ộ
ữ
ọ
ấ
ạ ẽ ọ ượ
ỡ ỗ
ặ
ị ấ
nh ng vi c g l i r t thú v , ch a đ y th thách và là m t ph n có giá tr trong l p trình.
ư
ệ ỡ ỗ ấ
ị
ứ
ầ
ử
ộ
ầ
ị
ậ