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

Ph l c D: G

ụ ụ

ỡ l i

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

ỗ ẽ ằ ở ướ ị

ườ

ỗ ằ ở ơ