การจัดการข้อยกเว้นใน 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 จากแถบเครื่องมือเพื่อรันโค้ด คุณจะได้รับผลลัพธ์ดังต่อไปนี้:

การจัดการข้อยกเว้น

นี่คือภาพหน้าจอของรหัส:

การจัดการข้อยกเว้น

คำอธิบายของรหัส:

  1. การสร้างโมดูลชื่อ Module1
  2. การสร้างขั้นตอนย่อยชื่อ departmentFunction โดยมีอาร์กิวเมนต์จำนวนเต็มสองตัว n1 และ n2 ByVal เป็นคีย์เวิร์ด VB.Net ที่ระบุว่าค่าของอาร์กิวเมนต์จะถูกส่งผ่านตามค่า
  3. การสร้างตัวแปรจำนวนเต็มชื่อคำตอบ
  4. จุดเริ่มต้นของบล็อก Try/Catch เราจำเป็นต้องล้อมรอบโค้ดที่เราสงสัยว่าอาจก่อให้เกิดข้อยกเว้นกับบล็อกนี้
  5. ดำเนินการหารระหว่างค่าของตัวแปร n1 และ n2 ผลลัพธ์ของการดำเนินการหารจะถูกกำหนดให้กับตัวแปรคำตอบ โค้ดนี้อาจสร้างข้อยกเว้นได้ เช่น เมื่อเราหารตัวเลขด้วยศูนย์ ดังนั้นเราจึงได้ล้อมตัวเลขนั้นด้วยบล็อค Try/Catch
  6. การตรวจจับข้อยกเว้นชื่อ DivideByZeroException และกำหนดข้อความข้อยกเว้นที่สร้างขึ้นให้กับอดีต
  7. การพิมพ์ข้อความบนคอนโซลเพื่อแจ้งให้ผู้ใช้ทราบถึงประเภท/ชื่อของข้อยกเว้นที่เกิดขึ้น
  8. บล็อกสุดท้าย สิ่งนี้จะดำเนินการไม่ว่าจะตรวจพบข้อยกเว้นหรือไม่ก็ตาม
  9. พิมพ์ข้อความบางส่วนบนคอนโซลเพื่อแสดงผลลัพธ์ของการดำเนินการหาร
  10. จุดสิ้นสุดของบล็อก Try นั่นคือจุดสิ้นสุดของรหัสการจัดการข้อผิดพลาด
  11. สิ้นสุดขั้นตอนย่อยของแผนกฟังก์ชัน
  12. จุดเริ่มต้นของขั้นตอนย่อยหลัก
  13. การเรียก/เรียกใช้กระบวนการย่อย divisionFunction ค่าของอาร์กิวเมนต์จำนวนเต็มสองตัวจะถูกส่งมาที่นี่ ค่าของ n1=4 และ n2=0 หมายความว่าการดำเนินการหารจะเท่ากับ 4\0 นั่นคือ n1\n2
  14. การหยุดหน้าต่างคอนโซลชั่วคราวเพื่อรอให้ผู้ใช้ดำเนินการเพื่อปิด
  15. สิ้นสุดขั้นตอนย่อยหลัก
  16. จุดสิ้นสุดของโมดูล

ข้อยกเว้นที่ผู้ใช้กำหนดใน 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 จากแถบด้านบนเพื่อรันโค้ด คุณจะได้รับผลลัพธ์ดังต่อไปนี้:

ข้อยกเว้นที่ผู้ใช้กำหนด

นี่คือภาพหน้าจอของรหัส:

ข้อยกเว้นที่ผู้ใช้กำหนด

คำอธิบายของรหัส:

  1. การสร้างโมดูลชื่อ Module1
  2. การสร้างคลาสข้อยกเว้นชื่อ HeightIsZeroException คลาสสืบทอดคลาส ApplicationException ทั้งหมด
  3. การสร้างขั้นตอนย่อยชื่อใหม่ จะใช้เวลาหนึ่งอาร์กิวเมนต์สตริงชื่อข้อความ
  4. การเรียกตัวสร้างคลาสฐานและส่งผ่านไปยังอาร์กิวเมนต์ข้างต้น
  5. สิ้นสุดขั้นตอนย่อยใหม่
  6. จุดสิ้นสุดของคลาส HeightIsZeroException
  7. การสร้างคลาสชื่อ Height ตัวแก้ไขการเข้าถึงสาธารณะคือ สาธารณะ ซึ่งหมายความว่าจะสามารถเข้าถึงได้โดยสาธารณะ
  8. การสร้างตัวแปรจำนวนเต็มชื่อ Height และกำหนดค่าเริ่มต้นเป็น 0
  9. การสร้างขั้นตอนย่อยชื่อ showHeight()
  10. ตรวจสอบว่าค่าของตัวแปร Height เป็น 0 เมื่อใด เราได้ใช้เงื่อนไข If…Then
  11. เมื่อต้องการโยน HeightIsZeroException หากเงื่อนไขข้างต้นเป็นจริง ข้อความ Zero Height Found จะแสดงขึ้นเมื่อมีการส่งข้อยกเว้นนี้
  12. ส่วน Else จะถูกดำเนินการเมื่อเงื่อนไข If ไม่เป็นความจริง
  13. ข้อความที่จะพิมพ์บนคอนโซลแสดงความสูงเมื่อไม่ใช่ 0
  14. สิ้นสุดเงื่อนไข If
  15. สิ้นสุดขั้นตอนย่อย showHeight()
  16. จบชั้นเรียนความสูง
  17. จุดเริ่มต้นของขั้นตอนย่อยหลัก
  18. การสร้างวัตถุชื่อ Height เป็นตัวอย่างของคลาส Height
  19. จุดเริ่มต้นของบล็อกการจัดการข้อยกเว้น
  20. เรียกใช้ขั้นตอนย่อย showHeight() ที่กำหนดไว้ในคลาส Height เราได้ใช้วัตถุของคลาสนี้เพื่อเข้าถึงวิธีนี้ บรรทัดนี้อาจส่งผลให้เกิดข้อยกเว้น ดังนั้นเราจึงล้อมรอบมันด้วยรหัสการจัดการข้อยกเว้น
  21. การจับ HeightIsZeroException Exception เป็นวัตถุ ex ในกรณีที่เกิดขึ้น
  22. ข้อความที่จะพิมพ์บนคอนโซลเมื่อตรวจพบ HeightIsZeroException
  23. จุดสิ้นสุดของบล็อกการจัดการข้อยกเว้น
  24. หยุดหน้าต่างคอนโซลชั่วคราวเพื่อรอให้ผู้ใช้ดำเนินการเพื่อปิด
  25. สิ้นสุดขั้นตอนย่อยหลัก
  26. จุดสิ้นสุดของโมดูล

โยนข้อยกเว้นใน 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) คลิกปุ่มเริ่มจากแถบด้านบนเพื่อรันโค้ด คุณควรได้รับสิ่งต่อไปนี้:

โยนข้อยกเว้น

นี่คือภาพหน้าจอของรหัส:

โยนข้อยกเว้น

คำอธิบายของรหัส:

  1. การสร้างโมดูลชื่อ Module1
  2. จุดเริ่มต้นของขั้นตอนย่อยหลัก
  3. จุดเริ่มต้นของรหัสการจัดการข้อผิดพลาด
  4. กำลังสร้างวัตถุข้อยกเว้น โค้ดนี้อาจสร้างข้อยกเว้น ดังนั้นเราจึงล้อมรอบวัตถุด้วยบล็อก Try/Catch
  5. การจับข้อยกเว้นเป็นวัตถุเช่นถ้าบรรทัดส่งข้อยกเว้น
  6. การพิมพ์ข้อความข้อยกเว้นบนคอนโซลในกรณีที่เกิดขึ้น
  7. บล็อกสุดท้ายที่จะรันไม่ว่าจะตรวจพบข้อยกเว้นหรือไม่ก็ตาม
  8. ข้อความที่จะพิมพ์บนคอนโซลเมื่อมีการดำเนินการบล็อกสุดท้าย
  9. จุดสิ้นสุดของรหัสการจัดการข้อยกเว้น
  10. หยุดคอนโซลชั่วคราวสักครู่เพื่อรอให้ผู้ใช้ดำเนินการเพื่อปิด
  11. สิ้นสุดขั้นตอนย่อยหลัก
  12. จุดสิ้นสุดของโมดูล

สรุป

  • ข้อยกเว้นหมายถึงปัญหาที่เกิดขึ้นระหว่างการทำงานของโปรแกรมซึ่งเกิดจากเหตุการณ์ที่ไม่คาดคิด
  • หากคุณสงสัยว่าโค้ดบางตัวจะสร้างข้อยกเว้น ให้ล้อมรอบโค้ดนั้นด้วยบล็อก Try/Catch
  • บล็อกสุดท้ายอยู่หลังบล็อก Try/Catch และดำเนินการไม่ว่าจะตรวจพบข้อยกเว้นหรือไม่ก็ตาม
  • VB.Net ช่วยให้เราสามารถสร้างข้อยกเว้นที่กำหนดเองได้