Visual Basic-Də Xətaların İdarə Edilməsi (Error Handling)

0 Cavablar 38 Baxış
·

Qiymət ver: Visual Basic-Də Xətaların İdarə Edilməsi (Error Handling)

Bu mövzunu artıq qiymətləndirmisiniz. Yenidən qiymətləndirmək mövcud qiymətinizi və ya rəyinizi siləcək.

Qiymət:

Qiymətləndirənlər: Visual Basic-Də Xətaların İdarə Edilməsi (Error Handling)

İştirakçılar
Mövzunu Açan #0
Visual Basic-də tətbiqlər hazırlayarkən kodunuzun gözlənilməz vəziyyətlərlə qarşılaşması qaçılmazdır. Bunlar səhv istifadəçi girişi, fayla giriş problemləri, şəbəkə nasazlıqları və ya hətta daxili məntiqi səhvlərdən ibarət ola bilər. Düzgün idarə edilmədikdə, bu "icra zamanı xətalar" (runtime errors) və ya "istisnalar" (exceptions) tətbiqinizin gözlənilmədən dayanmasına səbəb ola bilər ki, bu da zəif istifadəçi təcrübəsinə, potensial məlumat itkisinə və narazılığa gətirib çıxarır. Məhz buna görə etibarlı xəta idarəetməsi sabit və güvənilir proqram təminatının hazırlanmasının vacib hissəsidir.

Visual Basic bu istisnaları idarə etmək üçün Try...Catch...Finally blokundan istifadə edən strukturlaşdırılmış və güclü bir mexanizm təqdim edir. Bu struktur proqramçılara potensial problemləri öncədən müəyyən etməyə, onları nəzarətli şəkildə həll etməyə və problemlər yarandıqda belə tətbiqin sabit və istifadəçi dostu qalmasını təmin etməyə imkan verir.

Try...Catch...Finally Blokunu Anlamaq

Try...Catch...Finally bloku xəta idarəetmə prosesində xüsusi məqsədə xidmət edən üç ayrı hissədən ibarətdir:

  1. Try Bloku:

    Bu, istisna yarada biləcəyini düşündüyünüz kodu yerləşdirdiyiniz əsas hissədir. İcra mühiti bu blokdakı səhvləri izləyir. Əgər Try bloku daxilində xəta baş verərsə, icra dərhal həmin nöqtədə dayanır və idarəetmə uyğun Catch blokuna ötürülür. Əgər heç bir xəta baş verməzsə, Catch blokları tamamilə keçilir.
  2. Catch Bloku(ları):

    Bu blok yalnız Try blokunda istisna baş verdikdə icra olunur. Burada xətanı idarə etmək üçün məntiq müəyyən edilir. Bu, xəta məlumatlarının qeydə alınması, istifadəçiyə aydın mesaj göstərilməsi, problemi düzəltməyə cəhd edilməsi və ya proqramın təhlükəsiz şəkildə sonlandırılması ola bilər. Catch bloku istəyə bağlı olaraq Exception obyektini qəbul edə bilər (məsələn, Catch ex As Exception). Bu obyekt baş vermiş konkret xəta haqqında ətraflı məlumat təqdim edir, məsələn mesajı, tipi və çağırış zənciri (call stack). Müxtəlif istisna növlərini ayrıca idarə etmək üçün bir neçə Catch bloku istifadə edə bilərsiniz.
  3. Finally Bloku:

    Bu blok məcburi deyil, lakin təmizləmə əməliyyatları üçün ciddi şəkildə tövsiyə olunur. Finally blokundakı kod istisna baş verib-verməməsindən, tutulub-tutulmamasından və ya hətta Try və Catch bloklarında Return əmri olmasından asılı olmayaraq hər zaman icra olunur. Bu səbəbdən, verilənlər bazası bağlantılarının bağlanması, fayl tutacaqlarının (file handles) sərbəst buraxılması və ya obyektlərin silinməsi kimi Try blokunda əldə edilmiş resursların azad edilməsi üçün ideal yerdir və heç bir resursun açıq və ya nəzarətsiz qalmamasını təmin edir.
Əsas Sintaksis Nümunəsi:

CODE
12345678910111213vb.net

Try

' Xəta yarada biləcək kod<br><br>' Məsələn, sıfıra bölmə cəhdi:<br><br>Dim numerator As Integer = 10<br><br>Dim denominator As Integer = 0<br><br>Dim result As Integer = numerator / denominator ' Bu sətir DivideByZeroException yaradacaq<br><br><br><br>MessageBox.Show("Hesablama uğurlu oldu. Nəticə: " &amp; result.ToString())<br>
Catch ex As Exception

' İstənilən növ xətanı idarə etmək üçün kod (ümumi tutma)<br><br>MessageBox.Show("Gözlənilməz xəta baş verdi: " &amp; ex.Message, "Xəta", MessageBoxButtons.OK, MessageBoxIcon.Error)<br>
Finally

' Uğurlu və ya uğursuz olmasından asılı olmayaraq hər zaman icra olunan kod<br><br>Console.WriteLine("Xəta idarəetmə bloku tamamlandı.")<br><br>' Nümunə: Verilənlər bazası bağlantısını bağlamaq, fayl kilidini açmaq<br>
End Try



Bir Neçə Catch Bloku ilə Xüsusi İstisnaların İdarə Edilməsi

Try...Catch strukturunun güclü xüsusiyyətlərindən biri konkret istisna növlərini tutmaq qabiliyyətidir. Bu, müxtəlif xəta vəziyyətləri üçün fərqli və uyğun idarəetmə məntiqi tətbiq etməyə imkan verir. Adətən daha spesifik Catch bloklarını ümumi Catch bloklarından əvvəl yazmaq tövsiyə olunur.

İstifadəçidən iki ədəd alıb bölmə əməliyyatı aparan tətbiqi nəzərdən keçirək:

CODE
1234567vb.net

Module Module1

Sub Main()<br><br>    Dim num1 As String<br><br>    Dim num2 As String<br><br>    Dim iNum1 As Integer<br><br>    Dim iNum2 As Integer<br><br>    Dim divisionResult As Double<br><br><br><br>    Console.WriteLine("Bölmək üçün iki ədəd daxil edin.")<br><br><br><br>    Try<br><br>        Console.Write("Birinci ədədi daxil edin: ")<br><br>        num1 = Console.ReadLine()<br><br>        iNum1 = Integer.Parse(num1) ' FormatException yarada bilər<br><br><br><br>        Console.Write("İkinci ədədi daxil edin: ")<br><br>        num2 = Console.ReadLine()<br><br>        iNum2 = Integer.Parse(num2) ' FormatException yarada bilər<br><br><br><br>        divisionResult = iNum1 / iNum2 ' DivideByZeroException yarada bilər<br><br><br><br>        Console.WriteLine("Bölmənin nəticəsi: " &amp; divisionResult.ToString())<br><br><br><br>    Catch ex As FormatException<br><br>        ' Daxil edilən mətnin tam ədədə çevrilə bilmədiyi halları idarə edir<br><br>        Console.WriteLine("Xəta: Rəqəm formatı düzgün deyil. Zəhmət olmasa düzgün tam ədədlər daxil edin. Təfərrüatlar: " &amp; ex.Message)<br><br>    Catch ex As DivideByZeroException<br><br>        ' Sıfıra bölmə ilə bağlı xətaları idarə edir<br><br>        Console.WriteLine("Xəta: Sıfıra bölmək olmaz. Zəhmət olmasa ikinci ədəd kimi sıfırdan fərqli dəyər daxil edin. Təfərrüatlar: " &amp; ex.Message)<br><br>    Catch ex As Exception<br><br>        ' Xüsusi Catch bloklarında idarə olunmayan digər gözlənilməz xətaları tutur<br><br>        Console.WriteLine("Gözlənilməz ümumi xəta baş verdi: " &amp; ex.Message)<br><br>    Finally<br><br>        Console.WriteLine("Əməliyyat cəhdi tamamlandı.")<br><br>        ' Təmizləmə kodları burada yerləşdirilir.<br><br>    End Try<br><br><br><br>    Console.ReadLine() ' Konsolu açıq saxlayır<br><br>End Sub<br>
End Module



Bu nümunədə:

Əgər istifadəçi hər hansı bir ədəd üçün rəqəm olmayan mətn (məsələn, "hello") daxil edərsə, FormatException tutulacaq.
Əgər istifadəçi ikinci ədəd olaraq "0" daxil edərsə, DivideByZeroException tutulacaq.
Digər gözlənilməz xətalar isə ümumi Catch ex As Exception bloku tərəfindən tutulacaq və heç bir xəta idarə olunmadan qalmayacaq.

Effektiv Xəta İdarəetməsi üçün Əsas Tövsiyələr:

Catch Bloklarında Spesifik Olun: Hər zaman əvvəlcə konkret istisnaları tutmağa çalışın. Bu, daha dəqiq xəta bərpasına və daha məlumatlandırıcı mesajlara imkan verir. Ümumi Catch ex As Exception yalnız son çıxış yolu və ya həqiqətən gözlənilməz xətalar üçün istifadə olunmalıdır.

Xətaları Gizlətməyin: Xətanı tutub heç nə etməmək ("boş catch bloku") pis təcrübə hesab olunur. Ən azından xətanı qeydə alın və ya istifadəçiyə məlumat verin. Gizlədilmiş xətalar sonradan tapılması çox çətin olan problemlərə səbəb ola bilər.

İstifadəçini Düzgün Məlumatlandırın: İstifadəçi yönümlü tətbiqlərdə aydın, qısa və faydalı xəta mesajları təqdim edin. İstifadəçilərin anlamayacağı texniki terminlərdən qaçın. Mümkündürsə, həll yolu və ya növbəti addımı göstərin.

Ətraflı Xəta Qeydləri Aparın: Sazlama, texniki dəstək və audit məqsədləri üçün hər zaman ətraflı xəta məlumatlarını qeydə alın. Buraya ex.Message, ex.StackTrace (xətanın kodun harasında baş verdiyini göstərir), ex.Source və tətbiqin vəziyyəti ilə bağlı digər vacib məlumatlar daxil olmalıdır. Xətaları fayla, verilənlər bazasına və ya Windows Event Log-a yazın.

Resursların Təmizlənməsi üçün Finally-dən İstifadə Edin: Bu çox vacibdir. Try blokunda açılmış və ya əldə edilmiş bütün resursların (məsələn, fayl axınları, verilənlər bazası bağlantıları və ya şəbəkə soketləri) Finally blokunda düzgün bağlandığından və ya silindiyindən əmin olun.

Həddindən Artıq İstifadədən Qaçının: Hər bir kod sətrini Try...Catch blokuna salmayın. Onu əsasən xəta ehtimalı yüksək olan əməliyyatlarda, xüsusilə xarici sistemlərlə (fayllar, şəbəkə, verilənlər bazaları) qarşılıqlı əlaqədə və ya potensial olaraq səhv istifadəçi məlumatlarının emalı zamanı istifadə edin. Həddindən artıq istifadə kodun oxunaqlığını azalda və performansa mənfi təsir göstərə bilər.

Xəta Ssenarilərini Test Edin: Catch bloklarını işə salmalı olan vəziyyətləri aktiv şəkildə yoxlayın. Bu, xəta idarəetmə məntiqinizin düzgün işlədiyini və tətbiqinizin problemli vəziyyətlərdə belə düzgün davrandığını təsdiqləyir.

Try...Catch...Finally bloklarını düzgün tətbiq edərək və bu tövsiyələrə əməl edərək, yalnız funksional deyil, həm də dayanıqlı, etibarlı və istifadəçilər üçün daha yaxşı təcrübə təqdim edən Visual Basic tətbiqləri yarada bilərsiniz.

Cavab vermək üçün daxil olmalısınız.

0 sitat seçildi