کنترل خطا در وی بی

Collapse
X
 
  • زمان
  • نمایش
حذف همه
new posts
  • shokou_69

    • 2015/11/04
    • 5

    کنترل خطا در وی بی

    حتما تا حالا برنامه هایی رو دیدین (و یا شایدم نوشتین) که با بروز خطا کل برنامه بسته میشه و گاها یک سری از اطلاعات کاربر از بین میره (در برنامه هایی که با بانک سروکار داره) برای اینکه از این مشکلات در برنامه بوجود نیاد باید از تکنیکهای کنترل خطا در برنامتون استفاده کنید:

    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
    در این روش با شماره گذاری کردن خطوط برنامه براحتی علاوه بر نشون دادن شماره و توضیحات خطا، شماره خط وقوع خطا هم به کاربر نشون داده میشه ، که این روش برای خطایابی برنامه خیلی بهتر از روشهای قبلیه.
    امیدوارم به دردتون بخوره
چند لحظه..