Penanganan Eksepsi VB.Net Penanganan Eksepsi VB.Net - Berguru IT - Tutorial Visual Basic, Networking, Tips dan Trik
logo

Penanganan Eksepsi VB.Net

Penanganan Eksepsi VB.Net - Eksepsi adalah kesalahan (error) atau pengecualian yang terjadi pada saat proses eksekusi program. Pengecualian adalah respon terhadap keadaan luar biasa yang muncul pada saat program berjalan, seperti usaha untuk membagi nilai tertentu dengan angka 0.

Pengecualian memberikan solusi atau cara untuk menstranfer kontrol dari satu bagian program ke program lainnya. Penanganan pengecualian VB.Net dibangun diatas empat kata kunci yaitu : Try, Catch, Finally, Throw. Berikut ini penjelasan dari empat kata kunci tersebut :

  • Try - Untuk mengidentifikasi blok kode dari penanganan kesalahan bila dalam kondisi tertentu, kode tersebut akan diaktifkan. Try bisa diikuti dengan satu atau lebih blok Catch.
  • Catch - Berfungsi untuk menangkap eksepsi / pengecualian yang terjadi selama eksekusi program.
  • Finally - Ini tidak digunakan untuk menangkap eksepsi, melainkan untuk meyakinkan bahwa suatu statemen akan dieksekusi setelah program selesai mengeksekusi statemen di dalam blok Try, baik terjadi eksepsi maupun tidak.
  • Throw - Sebuah program melempar pengecualian saat sebuah masalah muncul. Hal ini dilakukan dengan kata kunci Throw.
Penanganan Eksepsi Visual Basic .Net

Berikut ini bentuk umum dari penggunaan statemen Try adalah sebagai berikut :

Try
    'Statemen yang memungkinkan terjadinya eksepsi
Catch ReferensiEksepsi As TipeEksepsi
    'kode penanganan eksepsi
Finally
    'Finalisasi statemen
End Try

Anda dapat mencantumkan beberapa laporan tangkapan (Catch) untuk menangkap jenis pengecualian yang berbeda jika blok Try anda menimbulkan lebih dari satu pengecualian dalam situasi yang berbeda.

Kelas Exception

Seperti yang telah disebutkan sebelumnya, dalam visual basic .net, eksepsi direpresentasikan dengan kelas. Semua eksepsi harus merupakan turunan dari kelas exception, yang berada dalam namespace system. Dengan kata lain, Exception adalah kelas dasar/induk dari semua kelas eksepsi. Kelas Exception sendiri merupakan turunan dari kelas objek.

Salah satu eksepsi turunan dari kelas Exception yang penting untuk diperhatikan adalah SystemException. Kelas ini merupakan induk dari kelas-kelas eksepsi yang dibangkitkan oleh visual basic .net runtime (CLR). Sebenarnya tidak ada data penambahan sifat apapun di dalam kelas SystemException. Proses penurunan kelas dari Exception ke SystemException semata-mata hanya untuk proses klasifikasi saja.




Berikut ini beberapa eksepsi standar di dalam .Net Framework yang sering digunakan dalam proses penanganan eksepsi :

Tipe EksepsiKeterangan
System.IO.IOException Handles I/O errors.
System.IndexOutOfRangeException Dibangkitkan ketika mengakses array dengan indeks diluar rentang.
Contoh : arr(arr.Length+1)
System.ArrayTypeMismatchException Menangani masalah ketika suatu tipe data tidak sesuai dengan tipe data array.
System.InvalidOperationException Dibangkitkan oleh metode pada saat berada di keadaan yang salah. Sebagai Contoh, memanggil Enumerator.Next() setelah memindahkan Item dari suatu koleksi
System.NullReferenceException Dibangkitkan ketika mengakses referensi yang menunjuk ke objek Nothing(Null).
Contoh :
Dim o As object = Nothing
o.ToString()
System.DivideByZeroException Menangani masalah pembagian bialngan bulat (menggunakan operator \) dengan nilai Nol.
System.InvalidCastException dibangkitkan ketika proses konversi (casting) nilai tidak dapat dilakukan.
System.OutOfMemoryException Menangani masalah bila memori yang bebas tidak mencukupi
System.StackOverflowException Menangani masalah yang dihasilkan stack overflow.


Penanganan Exception


Visual Basic .Net sudah menyediakan solusi terstruktur untuk masalah penaganan exception (pengecualian) dalam bentuk blok Try and Catch. Dengan blok ini, pernyataan program inti dipisahkan dari pernyataan penanganan kesalahan.

Blok penanganan kesalahan ini diterapkan dengan menggunakan kata kunci Try, Catch, Finally. Berikut ini adalah contoh melempar exception saat terjadi pembagian dengan kondisi nol :

Module Module1
    Sub Contoh(ByVal angka1 As Integer, ByVal angka2 As Integer)
        Dim result As Integer
        Try
            result = angka1 \ angka2
        Catch e As DivideByZeroException
            Console.WriteLine("MEnangkap Pengecualian: {0}", e)
        Finally
            Console.WriteLine("Hasilnya: {0}", result)
        End Try
    End Sub
    Sub Main()
        Contoh(55, 0)
        Console.ReadKey()
    End Sub
End Module


Coba Jalankan program diatas, maka akan menghasilkan seperti dibawah ini :

Menangkap Pengecualian: System.DivideByZeroException: Attempted to divide by zero.
   at Exception.Module1.Contoh(Int32 angka1, Int32 angka2) in ..location project..
Hasilnya: 0


Menangani Banyak Exception

Satu statemen Try dapat memiliki lebih dari satu klausa Catch. Masing-masing klausa Catch digunakan untuk menangkap satu tipe eksepsi. Artinya, kita dapat menangani beberapa tipe eksepsi hanya dengan menggunakan blok Try-Catch. Banyak kasus-kasus pemrograman yang dijumpai didunia nyata menggunakan blok Try-Catch semacam ini.

Bentuk umum penggunaannya adalah sebagai berikut :

Try
    'Statemen
    '......
Catch e1 As TipeEksepsi1
    'kode penanganan untuk tipe eksepsi ke-1
Catch e2 As TipeEksepsi2
    'kode penanganan untuk tipe eksepsi ke-2
Catch e3 As TipeEksepsi
    'kode penanganan untuk tipe eksepsi ke-3
End Try

Untuk mendemonstrasikan penggunaan statemen Try dengan klausa Catch lebih dari satu lihat contoh program dibawah ini:

Module Module1
    Sub Main()
        Dim angka As Integer = 0
        Dim total As Integer = 0
        Dim x As String = Nothing

        Console.Write("Masukkan bilangan bulat: ")
        x = Console.ReadLine

        Try
            angka = Integer.Parse(x)
            total = 100 \ angka
            Console.WriteLine("Total 100 dibagi " & angka & " = {0}", total)
        Catch e1 As DivideByZeroException
            Console.WriteLine("ERROR: " & "Terjadi pembagian dengan Nol.")
        Catch e2 As FormatException
            Console.WriteLine("ERROR: " & "Anda Tidak Memasukkan bilangan bulat.")
        End Try

        Console.ReadLine()
    End Sub
End Module


Jalankan program dan isi angka 5 lalu enter, maka hasilnya akan seperti ini:

Masukkan bilangan bulat: 5
Total 100 dibagi 5 = 20


Jalankan lagi programnya dan isi angka 0 lalu enter, dan hasilnya :

Masukkan bilangan bulat: 0
ERROR: Terjadi pembagian dengan Nol.


Jalankan lagi programnya dan isi angka 11.5 lalu tekan enter, dan lihat hasilnya:

Masukkan bilangan bulat: 11.5
ERROR: Anda Tidak Memasukkan bilangan bulat.

Penjelasan :
Untuk menangkap error handling diatas saya menggunakan DivideByZeroException dan FormatException dimana tipe DivideByZeroException akan terjadi ketika user memasukkan angka 0 ke dalam variabel angka, sedangkan  FormatException akan terjadi ketika user memasukkan nilai yang tidak bertipe bilangan bulat. Dalam Contoh diatas user mamasukkan nilai 11.5 (bertipe Double) ke dalam variabel angka.

Menggunakan Statemen Throw

Seperti keterangan tabel diatas di bagian tipe eksepsi (Throw) bahwa sebuah program melempar pengecualian saat sebuah masalah muncul. Nah bentuk umum dari penggunaan statemen Throw adalah sebagai berikut:

    Throw New TipeEksepsi(parameter)

Sebagai contoh, coba anda perhatikan kode dibawah ini:

Module Module1
    Function bagi(ByVal x As Integer, ByVal y As Integer) As Integer
        If y = 0 Then
            'melempar eksepsi
            Throw New DivideByZeroException()
        End If
        'jika y tidak sama dengan nol
        Return x \ y
    End Function
    Sub Main()
        Dim a As Integer = 8
        Dim b As Integer = 0
        Dim hasil As Integer = 0

        Try
            'memanggil metode bagi()
            hasil = bagi(a, b)
            Console.WriteLine("Hasil bagi = {0}", hasil)
        Catch e1 As DivideByZeroException
            Console.WriteLine("ERROR: " & "Terjadi pembagian dengan nol.")
        End Try
        Console.ReadLine()
    End Sub
End Module


Jalankan program dan lihat hasilnya

ERROR: Terjadi pembagian dengan nol.

Penjelasan :
Dalam metode bagi() yang terdapat di kode program diatas, dengan sengaja kita dapat melempar atau membangkitkan eksepsi DivideByZeroException pada saat parameter b bernilai 0.

Saran

Gunakanlah blok try-catch untuk menangkap error pada saat dieksekusi, hal ini akan membantu anda untuk mengetahui error apa yang sedang terjadi pada program anda serta untuk menghindari program not responding. Dengan begitu, anda akan terbantu untuk pengembangan program selanjutnya.
Tags

0 Komentar untuk "Penanganan Eksepsi VB.Net"

Subscribe

Adblock Detected

Like this blog? Keep us running by whitelisting this blog in your ad blocker

This is how to whitelisting this blog in your ad blocker

Thank you

×