Visual Basic for Applications:
การจัดการกับข้อผิดพลาด
วิธีการ:
ใน VBA, การจัดการข้อผิดพลาดนั้นมักจะใช้งานผ่านคำสั่ง On Error
ซึ่งสั่งการให้ VBA ดำเนินการอย่างไรเมื่อเกิดข้อผิดพลาดขึ้น กลวิธีการจัดการข้อผิดพลาดที่พบบ่อยที่สุดประกอบไปด้วย On Error GoTo
ป้ายกำกับ, On Error Resume Next
, และ On Error GoTo 0
.
ตัวอย่างที่ 1: การใช้งาน On Error GoTo
วิธีนี้ช่วยให้คุณสามารถกำหนดให้โปรแกรมไปยังส่วนของโค้ดที่ระบุอย่างชัดเจนหลังจากพบกับข้อผิดพลาดได้
Sub ErrorHandlerExample()
On Error GoTo ErrHandler
Dim intDivision As Integer
intDivision = 5 / 0 ' จะเกิดข้อผิดพลาดการหารด้วยศูนย์
Exit Sub
ErrHandler:
MsgBox "เกิดข้อผิดพลาด: " & Err.Description, vbCritical, "ข้อผิดพลาด!"
Resume Next
End Sub
ในตัวอย่างนี้, ข้อผิดพลาดใดก็ตามที่เกิดขึ้นจะทำให้กระโดดไปยัง ErrHandler
, แสดงข้อความแจ้งเตือนข้อผิดพลาด และดำเนินการกับบรรทัดถัดไปหลังจากเกิดข้อผิดพลาด
ตัวอย่างที่ 2: การใช้งาน On Error Resume Next
กลยุทธ์นี้สั่งให้ VBA ดำเนินการกับบรรทัดถัดไปแม้ว่าจะเกิดข้อผิดพลาด ซึ่งอาจจะมีประโยชน์สำหรับข้อผิดพลาดที่คาดว่าจะไม่เป็นอันตรายหรือเมื่อคุณวางแผนที่จะจัดการกับข้อผิดพลาดในภายหลัง
Sub ResumeNextExample()
On Error Resume Next
Dim intDivision As Integer
intDivision = 5 / 0 ' จะไม่ทำให้โปรแกรมหยุด; ข้อผิดพลาดถูกละเลย
' ตรวจสอบว่าเกิดข้อผิดพลาดหรือไม่
If Err.Number <> 0 Then
MsgBox "เกิดข้อผิดพลาด: " & Err.Description, vbExclamation, "จัดการข้อผิดพลาด"
' รีเซ็ตข้อผิดพลาด
Err.Clear
End If
End Sub
ในกรณีนี้, โปรแกรมไม่หยุดทำงานเมื่อเกิดข้อผิดพลาด; มันตรวจสอบว่ามีข้อผิดพลาดเกิดขึ้นหรือไม่, จัดการหากมี, และจากนั้นล้างข้อผิดพลาด
ศึกษาเพิ่มเติม
ตามประวัติศาสตร์, การจัดการข้อผิดพลาดในภาษาโปรแกรมมิ่งได้พัฒนาจากคำสั่ง goto ที่ง่ายไปสู่กลไกที่ซับซ้อนกว่าเช่นการใช้งาน Exceptions ในภาษาอย่าง Java และ C#. การจัดการข้อผิดพลาดใน VBA ถึงแม้จะไม่มีความแข็งแกร่งหรือความยืดหยุ่นเท่ากับการจัดการ Exception สมัยใหม่ แต่ก็ยังสามารถใช้งานได้สมควรตามบริบทของการประยุกต์ใช้ภาษาในการอัตโนมัติงานในสภาพแวดล้อม Microsoft Office
ข้อจำกัดหลักของการจัดการข้อผิดพลาดใน VBA คือการต้องใช้วิธีการที่ค่อนข้างซ้ำซ้อนและต้องการการวางรหัสการจัดการข้อผิดพลาดและความเข้าใจอย่างชัดเจนเกี่ยวกับการไหลของการดำเนินการ ภาษาการเขียนโปรแกรมสมัยใหม่มักจะนำเสนอโซลูชันที่ง่ายต่อการใช้งานเพิ่มเติม เช่นบล็อก try-catch ที่จัดการการไหลของโค้ดไปยังโค้ดการจัดการข้อผิดพลาดโดยอัตโนมัติโดยไม่ต้องใช้การตรวจสอบหรือกระโดดในการดำเนินการโค้ด
แม้ว่าจะมีข้อจำกัดเหล่านี้, กลไกการจัดการข้อผิดพลาดของ VBA นั้นเหมาะสมสำหรับงานอัตโนมัติส่วนใหญ่และเมื่อใช้งานอย่างเหมาะสม สามารถช่วยลดความเป็นไปได้ของข้อผิดพลาดที่ไม่ได้รับการจัดการลงได้อย่างมาก นอกจากนี้ การเข้าใจถึงกลไกการจัดการข้อผิดพลาดของ VBA ยังสามารถให้มุมมองเกี่ยวกับแบบแผนการเขียนโปรแกรมสมัยก่อนและการพัฒนากลยุทธ์การจัดการข้อผิดพลาดในการพัฒนาซอฟต์แวร์