حتما تا حالا برنامه هایی رو دیدین (و یا شایدم نوشتین) که با بروز خطا کل برنامه بسته میشه و گاها یک سری از اطلاعات کاربر از بین میره (در برنامه هایی که با بانک سروکار داره)
برای اینکه از این مشکلات در برنامه بوجود نیاد باید از تکنیکهای کنترل خطا در برنامتون استفاده کنید:
1- راحتترین شیوه استفاده از عبارت On Error Resume Next می باشد به اینصورت که این عبارت رو در اول Sub,Function,Procedure اضافه کنید، هنگام اجرای برنامه اگه در تابع مورد نظر خطایی رخ بده، کنترل برنامه بصورت اتوماتیک به خط بعدی میره و کاربر با مشکلی مواجه نمیشه، البته اشکال این روش در همینه که کاربر متوجه بروز خطا نمیشه (پس برنامه نویس هم نمیتونه اون رو رفع کنه) ولی با این حال یه جاهایی قابل استفاده است، یه نمونه:
Private Sub Command1_Click()
On Error Resume Next
Dim c As Byte
a = 2
b = 1
c = b - a
MsgBox c
End Sub
2- با این روش و روش سوم کاربر متوجه بروز خطا و نوع خطا میشه
نمونه:
Private Sub Command1_Click()
On Error GoTo errHere:
Dim c As Byte
a = 2
b = 1
c = b - a
MsgBox c
Exit Sub
errHere:
If Error <> "" Then MsgBox "Error " & Err.Number & " - " & Err.Deion
End Sub
به این صورت که ابتدای تابع با اضافه کردن دستور goto ، مشخص می کنیم که در صورت بروز خطا، کنترل برنامه به لیبل مشخصی هدایت بشه و در اون بخش با استفاده از msgbox ، شماره و توضیحات خطا رو به کاربر نشون میدیم.
3- و روش آخر که از دوتای قبلی جالب تره
نمونه:
Private Sub Command1_Click()
On Error GoTo errHere:
Dim c As Byte
1 a = 2
2 b = 1
3 c = b - a
4 MsgBox c
Exit Sub
errHere:
If Error <> "" Then MsgBox "Error " & Err.Number & " - " & Err.Deion + vbCrLf + "in line: " + Str(Erl)
End Sub
در این روش با شماره گذاری کردن خطوط برنامه براحتی علاوه بر نشون دادن شماره و توضیحات خطا، شماره خط وقوع خطا هم به کاربر نشون داده میشه ، که این روش برای خطایابی برنامه خیلی بهتر از روشهای قبلیه.
امیدوارم به دردتون بخوره
نظر فراموش نشه
دانلود نمونه برنامه

نوشته شده توسط مهدی در سه شنبه 88/5/6 و ساعت 6:48 صبح |
نظرات دیگران()