การจัดการข้อยกเว้นใน VB.Net: ลองและจับตัวอย่างการจัดการ
ข้อยกเว้นใน VB.Net คืออะไร?
An ข้อยกเว้น ใน VB.Net กล่าวถึงปัญหาที่เกิดขึ้นระหว่างการทำงานของโปรแกรม ซึ่งเกิดจากสถานการณ์ที่ไม่คาดคิด ตัวอย่างที่ดีคือเมื่อคุณทำการหาร แล้วคุณหารด้วยศูนย์ (0) จะเกิดข้อยกเว้นขึ้น
การจัดการข้อยกเว้นใน VB.Net คืออะไร
โดยมีข้อยกเว้นใน VB.Netคุณสามารถโอนการควบคุมโปรแกรมจากส่วนหนึ่งไปยังอีกส่วนหนึ่งได้ ใน VB.Net ข้อยกเว้นจะถูกจัดการโดยใช้คีย์เวิร์ด 4 คำต่อไปนี้:
คำหลัก | รายละเอียด |
---|---|
ดู | การทำงานของบล็อก Try คือการระบุบล็อกโค้ดที่จะเปิดใช้งานข้อยกเว้นเฉพาะ ควรตามด้วย catch block(s) |
จับ | การตรวจจับข้อยกเว้นเสร็จสิ้นในบล็อกนี้ เป็นตัวจัดการข้อยกเว้นซึ่งมีการจัดการข้อยกเว้น |
ในที่สุด | ใช้บล็อกสุดท้ายเพื่อรันชุดคำสั่งไม่ว่าจะมีข้อยกเว้นเกิดขึ้นหรือไม่ก็ตาม |
โยน | มีข้อยกเว้นเกิดขึ้นหลังจากการเกิดปัญหา นี่คือผลงานของคีย์เวิร์ด Throw |
ไวยากรณ์ของ Try Catch ใน VB.Net
คำสั่ง Try Catch ใน VB.Net ถูกกำหนดโดยใช้ไวยากรณ์ด้านล่าง:
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
บล็อก Try/Catch ควรล้อมรอบโค้ดที่อาจทำให้เกิดข้อยกเว้น รหัสนี้เรียกว่ารหัสที่ได้รับการป้องกัน คุณสามารถใช้คำสั่ง catch ได้หลายรายการเมื่อคุณต้องการจับข้อยกเว้นประเภทต่างๆ
ตัวอย่างการจัดการข้อยกเว้นใน VB.Net พร้อม Try Catch และสุดท้าย
ด้วยคำสั่ง Try/Catch คุณสามารถแยกโค้ดโปรแกรมปกติของคุณออกจากระบบการจัดการข้อผิดพลาดได้ ให้เราสาธิตวิธีจัดการกับข้อยกเว้นโดยใช้คีย์เวิร์ด Try, Catch และ Final
ขั้นตอน 1) สร้างแอปพลิเคชันคอนโซลใหม่
ขั้นตอน 2) ใช้รหัสนี้:
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
ขั้นตอน 3) คลิกปุ่ม Start จากแถบเครื่องมือเพื่อรันโค้ด คุณจะได้รับผลลัพธ์ดังต่อไปนี้:
นี่คือภาพหน้าจอของรหัส:
คำอธิบายของรหัส:
- การสร้างโมดูลชื่อ Module1
- การสร้างขั้นตอนย่อยชื่อ departmentFunction โดยมีอาร์กิวเมนต์จำนวนเต็มสองตัว n1 และ n2 ByVal เป็นคีย์เวิร์ด VB.Net ที่ระบุว่าค่าของอาร์กิวเมนต์จะถูกส่งผ่านตามค่า
- การสร้างตัวแปรจำนวนเต็มชื่อคำตอบ
- จุดเริ่มต้นของบล็อก Try/Catch เราจำเป็นต้องล้อมรอบโค้ดที่เราสงสัยว่าอาจก่อให้เกิดข้อยกเว้นกับบล็อกนี้
- ดำเนินการหารระหว่างค่าของตัวแปร n1 และ n2 ผลลัพธ์ของการดำเนินการหารจะถูกกำหนดให้กับตัวแปรคำตอบ โค้ดนี้อาจสร้างข้อยกเว้นได้ เช่น เมื่อเราหารตัวเลขด้วยศูนย์ ดังนั้นเราจึงได้ล้อมตัวเลขนั้นด้วยบล็อค Try/Catch
- การตรวจจับข้อยกเว้นชื่อ DivideByZeroException และกำหนดข้อความข้อยกเว้นที่สร้างขึ้นให้กับอดีต
- การพิมพ์ข้อความบนคอนโซลเพื่อแจ้งให้ผู้ใช้ทราบถึงประเภท/ชื่อของข้อยกเว้นที่เกิดขึ้น
- บล็อกสุดท้าย สิ่งนี้จะดำเนินการไม่ว่าจะตรวจพบข้อยกเว้นหรือไม่ก็ตาม
- พิมพ์ข้อความบางส่วนบนคอนโซลเพื่อแสดงผลลัพธ์ของการดำเนินการหาร
- จุดสิ้นสุดของบล็อก Try นั่นคือจุดสิ้นสุดของรหัสการจัดการข้อผิดพลาด
- สิ้นสุดขั้นตอนย่อยของแผนกฟังก์ชัน
- จุดเริ่มต้นของขั้นตอนย่อยหลัก
- การเรียก/เรียกใช้กระบวนการย่อย divisionFunction ค่าของอาร์กิวเมนต์จำนวนเต็มสองตัวจะถูกส่งมาที่นี่ ค่าของ n1=4 และ n2=0 หมายความว่าการดำเนินการหารจะเท่ากับ 4\0 นั่นคือ n1\n2
- การหยุดหน้าต่างคอนโซลชั่วคราวเพื่อรอให้ผู้ใช้ดำเนินการเพื่อปิด
- สิ้นสุดขั้นตอนย่อยหลัก
- จุดสิ้นสุดของโมดูล
ข้อยกเว้นที่ผู้ใช้กำหนดใน VB.Net
VB.Net ช่วยให้คุณสามารถกำหนดข้อยกเว้นของคุณเองได้ คุณสามารถรับคลาสข้อยกเว้นที่ผู้ใช้กำหนดได้จากคลาส ApplicationException ให้เราสาธิตสิ่งนี้ด้วยตัวอย่าง:
ตัวอย่างข้อยกเว้นที่ผู้ใช้กำหนดใน VB.Net
นี่คือตัวอย่างของข้อยกเว้นที่ผู้ใช้กำหนดใน VB.Net:
ขั้นตอน 1) สร้างแอปพลิเคชันคอนโซลใหม่
ขั้นตอน 2) ใช้รหัสต่อไปนี้:
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
ขั้นตอน 3) คลิกปุ่ม Start จากแถบด้านบนเพื่อรันโค้ด คุณจะได้รับผลลัพธ์ดังต่อไปนี้:
นี่คือภาพหน้าจอของรหัส:
คำอธิบายของรหัส:
- การสร้างโมดูลชื่อ Module1
- การสร้างคลาสข้อยกเว้นชื่อ HeightIsZeroException คลาสสืบทอดคลาส ApplicationException ทั้งหมด
- การสร้างขั้นตอนย่อยชื่อใหม่ จะใช้เวลาหนึ่งอาร์กิวเมนต์สตริงชื่อข้อความ
- การเรียกตัวสร้างคลาสฐานและส่งผ่านไปยังอาร์กิวเมนต์ข้างต้น
- สิ้นสุดขั้นตอนย่อยใหม่
- จุดสิ้นสุดของคลาส HeightIsZeroException
- การสร้างคลาสชื่อ Height ตัวแก้ไขการเข้าถึงสาธารณะคือ สาธารณะ ซึ่งหมายความว่าจะสามารถเข้าถึงได้โดยสาธารณะ
- การสร้างตัวแปรจำนวนเต็มชื่อ Height และกำหนดค่าเริ่มต้นเป็น 0
- การสร้างขั้นตอนย่อยชื่อ showHeight()
- ตรวจสอบว่าค่าของตัวแปร Height เป็น 0 เมื่อใด เราได้ใช้เงื่อนไข If…Then
- เมื่อต้องการโยน HeightIsZeroException หากเงื่อนไขข้างต้นเป็นจริง ข้อความ Zero Height Found จะแสดงขึ้นเมื่อมีการส่งข้อยกเว้นนี้
- ส่วน Else จะถูกดำเนินการเมื่อเงื่อนไข If ไม่เป็นความจริง
- ข้อความที่จะพิมพ์บนคอนโซลแสดงความสูงเมื่อไม่ใช่ 0
- สิ้นสุดเงื่อนไข If
- สิ้นสุดขั้นตอนย่อย showHeight()
- จบชั้นเรียนความสูง
- จุดเริ่มต้นของขั้นตอนย่อยหลัก
- การสร้างวัตถุชื่อ Height เป็นตัวอย่างของคลาส Height
- จุดเริ่มต้นของบล็อกการจัดการข้อยกเว้น
- เรียกใช้ขั้นตอนย่อย showHeight() ที่กำหนดไว้ในคลาส Height เราได้ใช้วัตถุของคลาสนี้เพื่อเข้าถึงวิธีนี้ บรรทัดนี้อาจส่งผลให้เกิดข้อยกเว้น ดังนั้นเราจึงล้อมรอบมันด้วยรหัสการจัดการข้อยกเว้น
- การจับ HeightIsZeroException Exception เป็นวัตถุ ex ในกรณีที่เกิดขึ้น
- ข้อความที่จะพิมพ์บนคอนโซลเมื่อตรวจพบ HeightIsZeroException
- จุดสิ้นสุดของบล็อกการจัดการข้อยกเว้น
- หยุดหน้าต่างคอนโซลชั่วคราวเพื่อรอให้ผู้ใช้ดำเนินการเพื่อปิด
- สิ้นสุดขั้นตอนย่อยหลัก
- จุดสิ้นสุดของโมดูล
โยนข้อยกเว้นใน VB.Net
ในการจัดการข้อยกเว้น คุณสามารถเลือกที่จะโยนวัตถุได้ อย่างไรก็ตาม วัตถุจะต้องได้รับมาจากระบบ Exceptionclass โดยตรงหรือโดยอ้อม ตัวอย่างเช่น:
ตัวอย่าง Throw Exception ใน VB.Net
ด้านล่างนี้เป็นตัวอย่างของการยกเว้นใน VB.Net:
ขั้นตอน 1) สร้างแอปพลิเคชันคอนโซลใหม่
ขั้นตอน 2) ใช้รหัสต่อไปนี้:
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
ขั้นตอน 3) คลิกปุ่มเริ่มจากแถบด้านบนเพื่อรันโค้ด คุณควรได้รับสิ่งต่อไปนี้:
นี่คือภาพหน้าจอของรหัส:
คำอธิบายของรหัส:
- การสร้างโมดูลชื่อ Module1
- จุดเริ่มต้นของขั้นตอนย่อยหลัก
- จุดเริ่มต้นของรหัสการจัดการข้อผิดพลาด
- กำลังสร้างวัตถุข้อยกเว้น โค้ดนี้อาจสร้างข้อยกเว้น ดังนั้นเราจึงล้อมรอบวัตถุด้วยบล็อก Try/Catch
- การจับข้อยกเว้นเป็นวัตถุเช่นถ้าบรรทัดส่งข้อยกเว้น
- การพิมพ์ข้อความข้อยกเว้นบนคอนโซลในกรณีที่เกิดขึ้น
- บล็อกสุดท้ายที่จะรันไม่ว่าจะตรวจพบข้อยกเว้นหรือไม่ก็ตาม
- ข้อความที่จะพิมพ์บนคอนโซลเมื่อมีการดำเนินการบล็อกสุดท้าย
- จุดสิ้นสุดของรหัสการจัดการข้อยกเว้น
- หยุดคอนโซลชั่วคราวสักครู่เพื่อรอให้ผู้ใช้ดำเนินการเพื่อปิด
- สิ้นสุดขั้นตอนย่อยหลัก
- จุดสิ้นสุดของโมดูล
สรุป
- ข้อยกเว้นหมายถึงปัญหาที่เกิดขึ้นระหว่างการทำงานของโปรแกรมซึ่งเกิดจากเหตุการณ์ที่ไม่คาดคิด
- หากคุณสงสัยว่าโค้ดบางตัวจะสร้างข้อยกเว้น ให้ล้อมรอบโค้ดนั้นด้วยบล็อก Try/Catch
- บล็อกสุดท้ายอยู่หลังบล็อก Try/Catch และดำเนินการไม่ว่าจะตรวจพบข้อยกเว้นหรือไม่ก็ตาม
- VB.Net ช่วยให้เราสามารถสร้างข้อยกเว้นที่กำหนดเองได้