Phân loại lỗ

Một phần của tài liệu Giáo trình lập trình cơ sở dữ liệu (Trang 43 - 45)

d. While End While

2.6.1 Phân loại lỗ

Trong VB.NET, chúng ta có thể gặp các loại lỗi sau:

Syntax error

Lỗi cú pháp, còn gọi là lỗi trong lúc thiết kế. Những lỗi này dễ chỉnh sửa vì VB.NET sẽ kiểm tra cú pháp khi ta đang nhập từ bàn phím nên sẽ báo lỗi tức thời khi ta gõ sai hoặc dùng một từ không thích hợp.

Run-time error

Lỗi thực thi xảy ra khi chương trình đang thực thi. Đây là những lỗi khó xác định hơn lỗi cú pháp. Lỗi thực thi có thể từ các lý do khác nhau như:

฀ Mở một tập tin không tồn tại

฀ Truy xuất một thư mục nhưng không có quyền trên đó ฀ Truy xuất dữ liệu một bảng không tồn tại trong CSDL ฀ Chia cho số 0

฀ Nhập chuỗi cho nơi cần nhập số hoặc ngược lại, v.v…

Logic error

Lỗi luận lý cũng xảy ra khi chương trình đang thực thi và được thể hiện dưới những hình thức hay những kết quả không mong đợi. Loại lỗi này thường do sai lầm trong thuật giải.

2.6.2 Xử lý lỗi

Một lỗi xảy ra khi chương trình đang chạy gọi là một Exception. Trong CLR, Exception là một đối tượng từ lớp System.Exception. Chúng ta cần lưu ý một lỗi xảy ra trong lúc thực thi không làm treo chương trình, nhưng nếu không được xử lý sẽ làm treo chương trình. CLR chỉ ra tình trạng lỗi qua lệnh Throw. Lệnh này sẽ đưa ra một đối tượng kiểu System.Exception chứa thông tin về lỗi đang xảy ra.

VB.NET cung cấp một cơ chế xử lý lỗi hoàn chỉnh với cú pháp sau: Try

' các lệnh có khả năng gây lỗi Catch

' các lệnh xử lý khi lỗi xảy ra [Finally]

43 End Try

Cấu trúc này cho phép chúng ta thử (Try) thực hiện một khối lệnh xem có gây lỗi không; nếu có sẽ bẫy và xử lý (Catch) lỗi.

Cấu trúc này chia làm các khối sau: ฀ Khối Try:

Chứa các câu lệnh có khả năng gây lỗi ฀ Khối Catch:

Các dòng lệnh để bẫy và xử lý lỗi phát sinh trên khối Try. Khối này gồm một loạt các lệnh bắt đầu với từ khóa Catch, biến kiểu Exception ứng với một kiểu Exception muốn bẫy và các lệnh xử lý. Dĩ nhiên, chúng ta có thể dùng một lệnh Catch cho các System.Exception, nhưng như thế sẽ không cung cấp thông tin đầy đủ cho người dùng về lỗi đang xảy ra cũng như hướng dẫn cách xử lý cụ thể cho mỗi tình huống. Ngoài những lỗi đã xử lý, có thể xảy ra những lỗi ngoài dự kiến, để xử lý các lỗi này, chúng ta nên đưa thêm một lệnh Catch để bẫy tất cả các trường hợp còn lại và xuất thông tin về lỗi xảy ra.

฀ Khối Finally:

Khối tùy chọn, sau khi chạy qua các khối Try và Catch nếu không có chỉ định nào khác, khối Finally sẽ được thực hiện bất kể có xảy ra lỗi hay không.

Cuối cùng, cấu trúc bẫy và xử lý lỗi chấm dứt với từ khóa End Try. Cú pháp chung cho một cấu trúc xử lý lỗi như sau

Try

' khối lệnh có thể gây lỗi

Catch <biến1> As <Kiểu Exception> [When <biểu thức>] ' khối lệnh bẫy và xử lý lỗi

Catch <biến2> As <Kiểu Exception> [When <biểu thức>] ' khối lệnh bẫy và xử lý lỗi

Finally

' khối lệnh kết thúc End Try

Ví dụ:

Dim d as Double, i as Integer Try

i = CInt(InputBox("Xin nhập một số nguyên")) d = 42 \ i

Catch ex As DivideByZeroException

Messagebox.Show("Không thể chia cho số không") Catch ex As InvalidCastException

44 Messagebox.Show("Xin nhập số nguyên !")

End Try

Câu lệnh Catch có thể có nhiều cách sử dụng:

Một phần của tài liệu Giáo trình lập trình cơ sở dữ liệu (Trang 43 - 45)