Xử lý ngoại lệ trong VB.Net: Ví dụ về xử lý thử & bắt
Ngoại lệ trong VB.Net là gì?
An Ngoại lệ trong VB.Net đề cập đến một vấn đề phát sinh trong quá trình thực hiện chương trình. Nó được gây ra bởi một tình huống bất ngờ. Một ví dụ điển hình là khi bạn đang thực hiện phép chia và sau đó bạn chia cho 0 (XNUMX). Một ngoại lệ sẽ được nêu ra.
Xử lý ngoại lệ trong VB.Net là gì?
Với ngoại lệ trong VB.Net, bạn có thể chuyển quyền điều khiển của một chương trình từ phần này sang phần khác. Trong VB.Net, các ngoại lệ được xử lý bằng 4 từ khóa sau:
Từ khóa | Chi tiết |
---|---|
Thử | Công việc của khối Try là xác định khối mã mà một ngoại lệ cụ thể sẽ được kích hoạt. Theo sau nó là (các) khối bắt. |
Catch | Việc bắt ngoại lệ được thực hiện trong khối này. Nó là một trình xử lý ngoại lệ trong đó Ngoại lệ được xử lý. |
Cuối cùng | Sử dụng khối Cuối cùng để chạy một tập hợp các câu lệnh cho dù có xảy ra ngoại lệ hay không. |
Quăng | Một ngoại lệ được đưa ra sau khi xảy ra sự cố. Đây là tác phẩm của từ khóa Ném. |
Cú pháp Try Catch trong VB.Net
Các câu lệnh Try Catch trong VB.Net được xác định bằng cú pháp dưới đây:
Try [ try_Statement(s) ] [ Exit Try ] [ Catch [ exception_name [ As type ] ] [ When expression ] [ catch_Statement(s) ] [ Exit Try ] ] [ Catch ... ] [ Finally [ finally_Statement(s) ] ] End Try
Khối Thử/Bắt phải bao quanh mã có thể gây ra ngoại lệ. Mã này được gọi là mã được bảo vệ. Bạn có thể sử dụng nhiều câu lệnh bắt khi cần bắt nhiều loại ngoại lệ khác nhau.
Ví dụ xử lý ngoại lệ trong VB.Net với Try Catch và Last
Với câu lệnh Thử/Bắt, bạn có thể tách mã chương trình thông thường của mình khỏi Hệ thống xử lý lỗi. Hãy để chúng tôi trình bày cách xử lý một ngoại lệ bằng cách sử dụng các từ khóa Thử, Bắt và Cuối cùng.
Bước 1) Tạo một ứng dụng bảng điều khiển mới.
Bước 2) Sử dụng mã này:
Module Module1 Sub divisionFunction(ByVal n1 As Integer, ByVal n2 As Integer) Dim answer As Integer Try answer = n1 \ n2 Catch ex As DivideByZeroException Console.WriteLine("Exception: {0}", ex) Finally Console.WriteLine("Answer is: {0}", answer) End Try End Sub Sub Main() divisionFunction(4, 0) Console.ReadKey() End Sub End Module
Bước 3) Nhấp vào nút Bắt đầu từ thanh công cụ để thực thi mã. Bạn sẽ nhận được kết quả sau:
Đây là ảnh chụp màn hình của mã:
Giải thích mã:
- Tạo một mô-đun có tên Module1.
- Tạo một thủ tục con có tên là DivisionFunction với hai đối số nguyên n1 và n2. ByVal là từ khóa VB.Net cho biết giá trị của đối số sẽ được truyền theo giá trị.
- Tạo một biến số nguyên có tên là câu trả lời.
- Bắt đầu khối Try/Catch. Chúng tôi cần bao quanh mã mà chúng tôi nghi ngờ có thể tạo ra ngoại lệ với khối này.
- Thực hiện phép chia giữa giá trị của biến n1 và n2. Kết quả của phép chia được gán cho câu trả lời biến. Mã này có thể đưa ra một ngoại lệ, chẳng hạn như khi chúng ta chia một số cho XNUMX, do đó chúng ta đã bao quanh nó bằng các khối Thử/Bắt.
- Bắt ngoại lệ có tên DivideByZeroException và gán thông báo ngoại lệ được tạo cho ex.
- In một số văn bản trên bảng điều khiển để thông báo cho người dùng về loại/tên của Ngoại lệ đã được nêu ra.
- Khối Cuối cùng. Điều này sẽ thực thi dù ngoại lệ có bị bắt hay không.
- In một số văn bản trên bảng điều khiển hiển thị kết quả của phép chia.
- Kết thúc khối Try, nghĩa là kết thúc mã xử lý lỗi.
- Kết thúc thủ tục con DivisionFunction.
- Bắt đầu thủ tục phụ chính.
- Gọi/gọi thủ tục con DivisionFunction. Các giá trị của hai đối số nguyên được truyền vào đây. Giá trị của n1=4 và n2=0. Điều này có nghĩa là phép chia sẽ là 4\0, tức là n1\n2.
- Tạm dừng cửa sổ bảng điều khiển chờ người dùng thực hiện hành động đóng nó.
- Kết thúc thủ tục phụ chính.
- Kết thúc mô-đun.
Ngoại lệ do người dùng xác định trong VB.Net
VB.Net cho phép bạn xác định các ngoại lệ của riêng mình. Bạn có thể nhận các lớp ngoại lệ do người dùng định nghĩa từ lớp ApplicationException. Hãy để chúng tôi chứng minh điều này bằng một ví dụ:
Ví dụ về ngoại lệ do người dùng xác định trong VB.Net
Đây là một ví dụ về ngoại lệ do người dùng xác định trong VB.Net:
Bước 1) Tạo một ứng dụng bảng điều khiển mới.
Bước 2) Sử dụng mã sau:
Module Module1 Public Class HeightIsZeroException : Inherits ApplicationException Public Sub New(ByVal text As String) MyBase.New(text) End Sub End Class Public Class Height Dim height As Integer = 0 Sub showHeight() If (height = 0) Then Throw (New HeightIsZeroException("Zero Height found")) Else Console.WriteLine("Height is: {0}", height) End If End Sub End Class Sub Main() Dim hght As Height = New Height() Try hght.showHeight() Catch ex As HeightIsZeroException Console.WriteLine("HeightIsZeroException: {0}", ex.Message) End Try Console.ReadKey() End Sub End Module
Bước 3) Nhấp vào nút Bắt đầu từ thanh trên cùng để thực thi mã. Bạn sẽ nhận được kết quả sau:
Đây là ảnh chụp màn hình của mã:
Giải thích mã:
- Tạo một mô-đun có tên Module1.
- Tạo một lớp ngoại lệ có tên HeightIsZeroException. Lớp kế thừa tất cả lớp ApplicationException.
- Tạo một thủ tục con có tên Mới. Nó sẽ lấy một đối số chuỗi có tên là văn bản.
- Gọi hàm tạo của lớp cơ sở và truyền cho nó đối số trên.
- Kết thúc thủ tục phụ mới.
- Kết thúc lớp HeightIsZeroException.
- Tạo một lớp có tên là Height. Công cụ sửa đổi truy cập công khai của nó là Công khai, nghĩa là nó sẽ có thể truy cập công khai.
- Tạo một biến số nguyên có tên Height và khởi tạo giá trị của nó thành 0.
- Tạo một thủ tục con có tên showHeight().
- Kiểm tra khi giá trị của biến Chiều cao bằng 0. Chúng tôi đã sử dụng điều kiện If…Then.
- Ném ngoại lệ HeightIsZeroException nếu điều kiện trên là đúng. Thông báo Zero Height Found sẽ được hiển thị khi ngoại lệ này được ném ra.
- Phần Else sẽ được thực thi khi điều kiện If không đúng.
- Thông báo in trên bảng điều khiển hiển thị Chiều cao khi chiều cao không bằng 0.
- Kết thúc điều kiện If.
- Kết thúc thủ tục con showHeight().
- Kết thúc lớp Chiều cao.
- Bắt đầu thủ tục phụ chính.
- Tạo một đối tượng có tên Height làm thể hiện của lớp Height.
- Bắt đầu khối xử lý ngoại lệ.
- Gọi thủ tục con showHeight() được định nghĩa trong lớp Height. Chúng tôi đã sử dụng một đối tượng của lớp này để truy cập phương thức này. Dòng này có thể dẫn đến một ngoại lệ. Vì vậy, chúng tôi đã bao quanh nó bằng một mã xử lý ngoại lệ.
- Bắt ngoại lệ HeightIsZeroException làm đối tượng cũ trong trường hợp nó xảy ra.
- Thông báo sẽ in trên bảng điều khiển khi gặp HeightIsZeroException.
- Kết thúc khối xử lý ngoại lệ.
- Tạm dừng cửa sổ bảng điều khiển chờ người dùng thực hiện hành động đóng nó.
- Kết thúc thủ tục phụ chính.
- Kết thúc mô-đun.
Ném ngoại lệ trong VB.Net
Trong xử lý ngoại lệ, bạn có thể chọn ném một đối tượng. Tuy nhiên, đối tượng phải được bắt nguồn từ System. Lớp ngoại lệ, trực tiếp hoặc gián tiếp. Ví dụ:
Ví dụ về Ném ngoại lệ trong VB.Net
Dưới đây là một ví dụ về ném ngoại lệ trong VB.Net:
Bước 1) Tạo một ứng dụng bảng điều khiển mới.
Bước 2) Sử dụng mã sau:
Module Module1 Sub Main() Try Throw New ApplicationException("Throwing a custom exception") Catch ex As Exception Console.WriteLine(ex.Message) Finally Console.WriteLine("The Finally Block") End Try Console.ReadKey() End Sub End Module
Bước 3) Nhấp vào nút Bắt đầu từ thanh trên cùng để thực thi mã. Bạn sẽ nhận được thông tin sau:
Đây là ảnh chụp màn hình của mã:
Giải thích mã:
- Tạo một mô-đun có tên Module1.
- Bắt đầu thủ tục phụ chính.
- Bắt đầu mã xử lý lỗi.
- Ném một đối tượng ngoại lệ. Mã này có thể tạo ra một ngoại lệ do đó chúng tôi đã bao quanh nó bằng một khối Try/Catch.
- Bắt ngoại lệ dưới dạng đối tượng cũ nếu dòng ném ngoại lệ.
- In thông báo ngoại lệ trên bảng điều khiển trong trường hợp nó xảy ra.
- Khối Cuối cùng để chạy dù ngoại lệ có bị bắt hay không.
- Thông báo sẽ in trên bảng điều khiển khi khối Cuối cùng được thực thi.
- Kết thúc mã xử lý ngoại lệ.
- Tạm dừng bảng điều khiển một lúc để chờ người dùng thực hiện hành động đóng bảng điều khiển.
- Kết thúc thủ tục phụ chính.
- Kết thúc mô-đun.
Tổng kết
- Một ngoại lệ đề cập đến một vấn đề phát sinh trong quá trình thực hiện chương trình do một tình huống bất ngờ gây ra.
- Nếu bạn nghi ngờ rằng một số mã sẽ tạo ra một ngoại lệ, hãy bao quanh nó bằng khối Try/Catch.
- Khối Cuối cùng xuất hiện sau khối Thử/Bắt và thực thi xem có bắt được ngoại lệ hay không.
- VB.Net cho phép chúng ta tạo các ngoại lệ tùy chỉnh.