Tr v
ở ề M c l c
ụ ụ cu n sách
ố
Chi n thu t g l i hay nh t còn tuỳ thu c vào lo i l i b n m c ph i:
ế
ậ ỡ ỗ
ấ
ộ
ạ ỗ ạ
ắ
ả
•
L i cú pháp t o ra b i trình biên d ch, nh m ch đ nh có tr c tr c trong cú pháp c a ch
ng trình.
ỗ
ạ
ở
ị
ằ
ỉ ị
ụ
ặ
ủ
ươ
Ch ng h n: b m t d u ch m ph y cu i câu l nh.
ẳ
ạ
ỏ ấ ấ
ấ
ẩ ở ố
ệ
•
Các bi t l đ
c t o ra n u có đi u gì tr c tr c khi ch
ng trình đang ch y. Ch ng h n: m t vòng đ quy
ệ ệ ượ ạ
ế
ề
ụ
ặ
ươ
ạ
ẳ
ạ
ộ
ệ
vô h n cu i cùng s gây nên bi t l
ạ
ố
ẽ
ệ ệ StackOverflowException.
•
L i logic khi n cho ch
ng trình th c hi n vi c làm sai. Ch ng h n, m t bi u th c có th không đ
c
ỗ
ế
ươ
ự
ệ
ệ
ẳ
ạ
ộ
ể
ứ
ể
ượ
tính toán đúng theo trình t mà b n đ nh li u, cho ra k t qu không l
ng tr
c.
ự
ạ
ị
ệ
ế
ả
ườ
ướ
Các m c ti p sau đây đ
c x p theo ki u l i; có nh ng kĩ thu t x lý dùng đ
c cho nhi u lo i l i khác
ụ
ế
ượ ế
ể ỗ
ữ
ậ ử
ượ
ề
ạ ỗ
nhau.
D.1 L i cú pháp
ỗ
Hình th c g l i hay nh t là đó b n không ph i làm gì, b i ngay t đ u b n đã tránh m c ph i l i.
ứ ỡ ỗ
ấ
ở
ạ
ả
ở
ừ ầ
ạ
ắ
ả ỗ
Trong m c tr
c, tôi đã đ xu t nh ng chi n l
c phát tri n đ gi m thi u l i và t o đi u ki n phát
ụ
ướ
ề
ấ
ữ
ế ượ
ể
ể ả
ể ỗ
ạ
ề
ệ
hi n s m l i khi m c ph i chúng. Đi m m u ch t là l y m t ch
ng trình ch y đ
c làm đi m kh i
ệ ớ
ỗ
ắ
ả
ể
ấ
ố
ấ
ộ
ươ
ạ
ượ
ể
ở
đ u, và m i lúc ch thêm r t ít mã l nh. Khi có l i, b n s bi t rõ là l i này n m đâu.
ầ
ỗ
ỉ
ấ
ệ
ỗ
ạ ẽ ế
ỗ
ằ ở
Dù v y, b n có th s r i vào m t trong nh ng tình hu ng sau. V i m i tình hu ng, tôi l i có đ xu t
ậ
ạ
ể ẽ ơ
ộ
ữ
ố
ớ
ỗ
ố
ạ
ề
ấ
cách x lý thích h p.
ử
ợ
TRÌNH BIÊN D CH BÀY RA LA LI T NH NG THÔNG BÁO L I.
Ị
Ệ
Ữ
Ỗ
N u trình biên d ch có báo đ n 100 l i đi n a, thì đi u này cũng không có nghĩa là ch
ng trình b n có
ế
ị
ế
ỗ
ữ
ề
ươ
ạ
100 l i. M i khi trình biên d ch g p m t l i, nó th
ng đi ch ch ra kh i lu ng th c thi m t quãng. Nó
ỗ
ỗ
ị
ặ
ộ ỗ
ườ
ệ
ỏ
ồ
ự
ộ
s c g ng h i ph c và ti p t c theo lu ng th c thi sau l i đ u tiên, nh ng đôi khi nó thông báo nh ng
ẽ ố ắ
ồ
ụ
ế ụ
ồ
ự
ỗ ầ
ư
ữ
l i đáng ng .
ỗ
ờ
Ch có thông báo l i đ u tiên m i đáng tin c y. Tôi g i ý r ng b n s a t ng l i m t, r i biên d ch l i
ỉ
ỗ ầ
ớ
ậ
ợ
ằ
ạ ử ừ
ỗ
ộ ồ
ị
ạ
ch
ng trình. B n có th th y m t d u ch m ph y có th “s a đ
c” 100 l i.
ươ
ạ
ể ấ
ộ ấ
ấ
ẩ
ể ử
ượ
ỗ
TÔI ĐANG G P M T L I BIÊN D CH TH T KÌ QU C VÀ NÓ CH NG BI N ĐI.
Ặ
Ộ
Ỗ
Ị
Ậ
Ặ
Ẳ
Ế
Tr
c h t, hãy đ c kĩ thông báo l i này. Thông báo đ
c vi t b ng ngôn ng chuyên d ng và r t ng n
ướ ế
ọ
ỗ
ượ
ế ằ
ữ
ụ
ấ
ắ
ng i, song th
ng n ch a m t thông tin c t lõi.
ủ
ườ
ẩ
ứ
ộ
ố
N u không có gì khác, thông báo s cho b n bi t tr c tr c x y ra đâu trong ch
ng trình. Th c ra, nó
ế
ẽ
ạ
ế
ụ
ặ ả
ở
ươ
ự
cho b n bi t trình biên d ch đang đâu khi phát hi n th y l i, ch không nh t thi t là n i có l i. Hãy
ạ
ế
ị
ở
ệ
ấ ỗ
ứ
ấ
ế
ơ
ỗ
dùng thông tin thu nh n t trình biên d ch nh m t ch d n, song n u b n không th y l i theo h
ng
ậ ừ
ị
ư ộ
ỉ ẫ
ế
ạ
ấ ỗ
ướ
ch d n đó thì hãy m r ng vi c tìm ki m ra.
ỉ ẫ
ở ộ
ệ
ế
Nói chung l i s n m tr
c v trí thông báo l i, song cũng có nh ng tr
ng h p mà l i n m n i khác
ỗ ẽ ằ ở ướ ị
ỗ
ữ
ườ
ợ
ỗ ằ ở ơ