วิธีการใช้ข้อยกเว้นที่มีโครงสร้างการจัดการใน Visual Basicสุทธิ หรือ ใน Visual Basic 2005

การแปลบทความ การแปลบทความ
หมายเลขบทความ (Article ID): 315965 - ผลิตภัณฑ์ที่เกี่ยวข้องในบทความนี้
ขยายทั้งหมด | ยุบทั้งหมด

เนื้อหาบนหน้านี้

สรุป

บทความนี้อธิบายวิธีการที่ใช้ข้อยกเว้นที่มีโครงสร้างการจัดการใน Visual Basicสุทธิ หรือ ใน Visual Basic 2005

ความต้องการ

รายการต่อไปนี้แสดงฮาร์ดแวร์ที่แนะนำ ซอฟต์แวร์ โครงสร้างพื้นฐานเครือข่าย และ service pack ที่คุณจำเป็นต้อง:
  • Visual Basicสุทธิหรือ Visual Basic 2005
บทความนี้อนุมานว่า คุณมีความคุ้นเคยกับหัวข้อต่อไปนี้:
  • Visual Basicสุทธิหรือ Visual Basic 2005
  • Microsoft Visual Studioสุทธิหรือ Microsoft Visual Studio 2005

การจัดการข้อยกเว้นที่มีโครงสร้าง

Visual Basicสุทธิหรือ Visual Basic 2005 มีการจัดการข้อยกเว้นที่มีโครงสร้างที่มีทางเลือกมีประสิทธิภาพ การอ่านได้ง่ายขึ้นในการจัดการข้อผิดพลาด "บนข้อผิดพลาดไปที่" ซึ่งมีอยู่ในรุ่นก่อนหน้าของ Microsoft Visual Basic การจัดการข้อยกเว้นที่มีโครงสร้างมีประสิทธิภาพมากขึ้นเนื่องจากจะช่วยให้คุณใช้การจัดกลุ่มตัวจัดการข้อผิดพลาดภายในอื่น ๆ ตัวจัดการข้อผิดพลาดภายในกระบวนการเดียวกัน การจัดการข้อยกเว้นที่มีโครงสร้างใช้ไวยากรณ์ของบล็อกคล้ายกับยิ่งไปกว่านั้น ถ้า...อื่น...สิ้นสุดถ้าคำสั่ง ซึ่งทำให้ Visual Basicสุทธิและ Visual Basic 2005 รหัสสามารถอ่าน และง่ายต่อการเก็บรักษาไว้

หมายเหตุ: Visual Basicสุทธิหรือ Visual Basic 2005 รักษาไวยากรณ์ "บนข้อผิดพลาดไป"สำหรับความเข้ากันได้แบบย้อนหลัง นอกจากนี้คุณยังสามารถใช้ไวยากรณ์นี้ใน Visual Basicรหัสสุทธิหรือ Visual Basic 2005 อย่างไรก็ตาม คุณไม่สามารถรวมการจัดการข้อยกเว้นที่มีโครงสร้างและคำสั่งบนข้อผิดพลาดภายในกระบวนการเดียวกัน เมื่อคุณเขียนโค้ดใหม่ Microsoft แนะนำให้ คุณใช้การจัดโครงสร้างการจัดการข้อยกเว้น

ไวยากรณ์พื้นฐานของการจัดการข้อผิดพลาดที่มีโครงสร้างเป็นดังนี้:
Try
   'Code that may raise an error.
Catch
   'Code to handle the error.
Finally
   'Code to do any final clean up.
End Try
				
ลองและสิ้นสุดลองคำสั่งที่จำเป็นต้องใช้ คำสั่งที่สามารถตรวจจับและสุดท้ายจะไม่จำเป็น ถึงแม้ว่าคุณต้องมีอย่างน้อยหนึ่งในรหัสของคุณ นอกจากนี้คุณยังสามารถระบุหลายสามารถจัดการคำสั่งเพื่อให้แต่ละบล็อกสามารถตรวจจับการจัดการกับข้อผิดพลาด

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

  1. เริ่ม Visual Studioสุทธิหรือ Visual Studio 2005
  2. สร้างโครงการใหม่ของแอพลิเคชันของคอนโซลใน Visual Basicสุทธิ หรือ ใน Visual Basic 2005
  3. ในกระบวนงานย่อยหลักเพิ่มรหัสต่อไปนี้:
    Dim a As Integer = 0
    Dim b As Integer = 0
    Dim c As Integer = 0
    
    Try
      a = b \ c
    Catch exc As Exception
      Console.WriteLine("A run-time error occurred")
    Finally
      Console.ReadLine()
    End Try
    					
  4. บนเมนูDebugคลิกเริ่มต้นการเรียกใช้โปรแกรมประยุกต์ รหัสพยายามหารตัวเลข ด้วยศูนย์ การดำเนินการที่ไม่ถูกต้องที่ทำให้ตัวหาร ด้วยศูนย์ข้อยกเว้นอยู่ โชคดี ที่บล็อกดักcatches ข้อผิดพลาดนี้ และหน้าต่างคอนโซลแสดงข้อความแสดงข้อผิดพลาดต่อไปนี้:
    A run-time error has occurred
    						
  5. ปิดหน้าต่างคอนโซล

สามารถจัดการข้อยกเว้นหลาย

ส่วนนี้อธิบายวิธีการที่ใช้คำสั่งการตรวจจับหลายการจัดการข้อผิดพลาดที่แตกต่างกัน
  1. เปิดโครงการแอพลิเคชันคอนโซลที่คุณสร้างในส่วนก่อนหน้านี้
  2. ในกระบวนงานย่อยหลักแทนรหัสที่คุณคัดลอกในส่วนก่อนหน้านี้กับรหัสต่อไปนี้:
    Dim a As Integer = 2147483647
    Dim b As Integer = 0
    Dim c As Integer = 0
    
    Try
      a += 1
    Catch exc As DivideByZeroException
      Console.WriteLine("Error: Divide by zero")
    Catch exc As OverflowException
      Console.WriteLine("Error: Overflow")
    Finally
      Console.ReadLine()
    End Try
    						
    รหัสนี้รวมบล็อกสามารถตรวจจับสอง: หนึ่งสามารถตรวจจับการหารก่อนหน้า โดยศูนย์ข้อผิดพลาด และหนึ่งสามารถตรวจจับข้อผิดพลาดมากเกินไปใหม่
  3. บนเมนูDebugคลิกเริ่มต้นการเรียกใช้โปรแกรมประยุกต์ หน้าต่างคอนโซลแสดงข้อความแสดงข้อผิดพลาดต่อไปนี้:
    Error: Overflow
    						
  4. ปิดหน้าต่างคอนโซล
  5. เนื่องจากคุณไม่สามารถคาดทุกข้อผิดพลาดที่อาจเกิดขึ้นได้เสมอ คุณสามารถเพิ่มการบล็อกสามารถจัดการทั้งหมดสำหรับข้อยกเว้นที่เจอ ตัวอย่าง เพิ่มรหัสต่อไปนี้ก่อนที่จะสั่งขั้นสุดท้ายเพื่อตรวจจับข้อผิดพลาดใด ๆ เจอ และแสดงข้อผิดพลาดที่เหมาะสม:
    Catch exc As Exception
    Console.WriteLine("Error: " & exc.Message)
    					
  6. บนเมนูแฟ้มคลิกปิดการแก้ไขปัญหา

ข้อยกเว้นที่อยู่นอกกระบวน

จัดการข้อยกเว้นที่มีโครงสร้างใช้คำสั่งที่สามารถตรวจจับการดักข้อยกเว้น ข้อยกเว้นที่มีโครงสร้างการจัดการยังมีวิธีที่จะออกใช้ข้อยกเว้น ยกตัวอย่างเช่น จะมีประโยชน์ที่จะออกใช้ข้อยกเว้นเมื่อคุณทำการตรวจสอบข้อมูลที่อยู่ภายในกระบวนงานการตั้งค่าคุณสมบัติได้เนื่องจากคุณอาจต้องการที่จะออกใช้มีข้อผิดพลาดหากมีละเมิดกฎทางธุรกิจ
  1. เริ่ม Visual Studioสุทธิหรือ Visual Studio 2005
  2. สร้างโครงการใหม่ของแอพลิเคชันของคอนโซลใน Visual Basicสุทธิ หรือ ใน Visual Basic 2005
  3. บนเมนูโครงการคลิกเพิ่มคลาส
  4. ในหน้าต่างเพิ่มสินค้าใหม่พิมพ์ clsPerson.vb ในข้อความชื่อกล่อง และจากนั้น คลิกตกลง
  5. เพิ่มรหัสต่อไปนี้ภายใน clsPersonคลาสาธารณะ...สิ้นสุดคลาคำสั่ง:
    Private mintAge As Integer
    
    Public Property Age() As Integer
      Get
        Age = mintAge
      End Get
      Set(ByVal Value As Integer)
        If Value >= 0 Then
          mintAge = Value
        Else
          Throw New ArgumentException ("Age cannot be negative")
        End If
      End Set
    End Property
    						
    รหัสนี้สร้างคุณสมบัติที่มีอายุ เนื่องจากบุคคลไม่มีอายุการลบ ข้อผิดพลาดถูกยกชั้นผู้ใช้พยายามที่ตั้งค่าอายุตัวเลขที่น้อยกว่าศูนย์
  6. ในกระบวนงานย่อยหลักของ Module1.vb เพิ่มรหัสต่อไปนี้:
    Dim p As New clsPerson()
    
    Try
      p.Age = -1
    Catch exc As Exception
      Console.WriteLine(exc.Message)
    Finally
      Console.ReadLine()
    End Try
    					
  7. บนเมนูDebugคลิกเริ่มต้นการเรียกใช้โปรแกรมประยุกต์ หน้าต่างคอนโซลแสดงข้อความแสดงข้อผิดพลาดต่อไปนี้:
    Age cannot be negative
    						
  8. ปิดหน้าต่างคอนโซล

รายการรหัสเสร็จสมบูรณ์

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

Module Module1

  Sub Main()
    Dim a As Integer = 0
    Dim b As Integer = 0
    Dim c As Integer = 0

    Try
      a = b \ c
    Catch exc As Exception
      Console.WriteLine("A run-time error occurred")
    Finally
      Console.ReadLine()
    End Try

  End Sub

End Module
				

สามารถจัดการข้อยกเว้นหลาย

Module Module1

  Sub Main()
    Dim a As Integer = 2147483647
    Dim b As Integer = 0
    Dim c As Integer = 0

    Try
      a += 1
    Catch exc As DivideByZeroException
      Console.WriteLine("Error: Divide by zero")
    Catch exc As OverflowException
      Console.WriteLine("Error: Overflow")
    Catch exc As Exception
      Console.WriteLine("Error: " & exc.Message)
    Finally
      Console.ReadLine()
    End Try


  End Sub

End Module
				

ข้อยกเว้นที่อยู่นอกกระบวน

Module Module1

  Sub Main()
    Dim p As New clsPerson()

    Try
      p.Age = -1
    Catch exc As Exception
      Console.WriteLine(exc.Message)
    Finally
      Console.ReadLine()
    End Try
  End Sub

End Module

Public Class clsPerson

  Private mintAge As Integer

  Public Property Age() As Integer
    Get
      Age = mintAge
    End Get
    Set(ByVal Value As Integer)
      If Value >= 0 Then
        mintAge = Value
      Else
        Throw New ApplicationException("Age cannot be negative")
      End If
    End Set
  End Property

End Class
				

การอ้างอิง

สำหรับข้อมูลเพิ่มเติม โปรดดูการเว็บไซต์ต่อไปนี้ของ Microsoft:
ข้อผิดพลาดในการจัดการ VB.วิธีสุทธิ: บรรยากาศ มีข้อยกเว้น (บทความสำหรับนักพัฒนา Visual Basic )
ขอบ http://msdn.microsoft.com/en-us/library/aa227603 (v=vs.60)

ฉันดักข้อยกเว้นได้อย่างไร
ขอบ http://msdn.microsoft.com/en-us/library/ys1b32h3 (v=vs.80)

อยู่อย่างไรฉันนอกกระบวนข้อยกเว้น
ขอบ http://msdn.microsoft.com/en-us/library/z7w9ff54 (v=vs.80)

คุณสมบัติ

หมายเลขบทความ (Article ID): 315965 - รีวิวครั้งสุดท้าย: 15 มิถุนายน 2555 - Revision: 6.0
ใช้กับ
  • Microsoft Visual Basic 2005
  • Microsoft Visual Basic .NET 2003 Standard Edition
  • Microsoft Visual Basic .NET 2002 Standard Edition
Keywords: 
kbvs2005swept kbvs2005applies kbhowtomaster kbmt KB315965 KbMtth
แปลโดยคอมพิวเตอร์
ข้อมูลสำคัญ: บทความนี้แปลโดยซอฟต์แวร์การแปลด้วยคอมพิวเตอร์ของ Microsoft แทนที่จะเป็นนักแปลที่เป็นบุคคล Microsoft มีบทความที่แปลโดยนักแปลและบทความที่แปลด้วยคอมพิวเตอร์ เพื่อให้คุณสามารถเข้าถึงบทความทั้งหมดในฐานความรู้ของเรา ในภาษาของคุณเอง อย่างไรก็ตาม บทความที่แปลด้วยคอมพิวเตอร์นั้นอาจมีข้อบกพร่อง โดยอาจมีข้อผิดพลาดในคำศัพท์ รูปแบบการใช้ภาษาและไวยากรณ์ เช่นเดียวกับกรณีที่ชาวต่างชาติพูดผิดเมื่อพูดภาษาของคุณ Microsoft ไม่มีส่วนรับผิดชอบต่อความคลาดเคลื่อน ความผิดพลาดหรือความเสียหายที่เกิดจากการแปลเนื้อหาผิดพลาด หรือการใช้บทแปลของลูกค้า และ Microsoft มีการปรับปรุงซอฟต์แวร์การแปลด้วยคอมพิวเตอร์อยู่เป็นประจำ
ต่อไปนี้เป็นฉบับภาษาอังกฤษของบทความนี้:315965

ให้ข้อเสนอแนะ

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com