Anda di halaman 1dari 16

PEMROGRAMAN VISUAL

BAB XI EXCEPTION HANDLING

Mata Kuliah : Pemrograman Visual


Dosen : Wiktasari S.T., M.Kom.
Disusun oleh
Nama : Anggia Dea Saputri
NIM : 3.34.20.4.02

PROGRAM STUDI TEKNIK INFORMATIKA


JURUSAN TEKNIK ELEKTRO
POLITEKNIK NEGERI SEMARANG
2021
11.2 Dasar Teori
Terdapat tiga macam kesalahan yang mungkin muncul ketika mengembangkan aplikasi VB.NET :
1. Kesalahan sintaks : kesalahan yang melanggar aturan VB.NET seperti ejaan pada kata kunci atau nama
variabel, kesalahan meletakkan tanda baca dan adanya kata yang hilang (misalnya blok if tanpa ditutup
dengan End if). Pada waktu desain, VB.NET akan mengecek kode yang Anda ketik dan jika ada kode
yang memiliki kesalahan sintaks, kode tersebut akan ditandai dengan garis bawah tipe wave/gelombang
sehingga saat itu Anda dapat langsung mengetahui dan memperbaikinya.
2. Kesalahan run time : merupakan kesalahan yang muncul ketika kode Anda dikompilasi atau dijalankan.
Kesalahan run timr disebabkan kode yang kelihatannya benar oleh kompiler, tetatpi tidak bisa jalan untuk
nilai-nilai tertentu. Contohnya adalah hitungan yang membagi angka dengan 0.
3. Kesalahan logika : kesalahan pemrograman yang memberikan hasil yang tidak sesuai dengan yang
diharapkan atau tidak terduga. Tipe kesalahan ini sulit dilacak dan diperbaiki karena kesalahan ini tidak
menghentikan eksekusi program. Contoh kesalahan logika :jika nilai lebih besar atau sama dengan 60
diberi predikat lulus. Kode :

If Nilai > 60 Then


Perintah penanganan kesalahan atau yang lebih dikenal dengan sebutan Exception Handling. Perintah ini
digunakan untuk menangani kesalahan dalam menjalankan aplikasi, dengan adanya perintah ini setiap
kesalahan akan diatasi secara otomatis sesuai dengan perintah penanganan kesalahan yang telah dibuat,
sehingga tidak terjadi kemacetan aplikasi yang sedang berjalan.
Dengan asumsi blok akan memunculkan eksepsi, metode menangkap pengecualian menggunakan kombinasi
kata kunci Try dan Catch. Sebuah blok Try / Catch ditempatkan di sekitar kode yang mungkin menghasilkan
pengecualian. Kode dalam blok Try / Catch disebut sebagai kode dilindungi, dan sintaks untuk menggunakan
Try / Catch tampak seperti berikut:
Try
[ tryStatements ]
[ Exit Try ]
[ Catch [ exception [ As type ] ] [ When expression ]
[ catchStatements ]
[ Exit Try ] ]
[ Catch ... ]
[ Finally
[ finallyStatements ] ]
End Try

 Try : mengidentifikasi blok kode yang berisi kode-kode tertentu yang


diharapkan untuk dilaksanakan oleh program atau aplikasi. Blok Try diikuti
oleh satu atau lebih blok Catch.
 Catch : Saat terjadi kesalahan pada blok Try, maka blok ini akan menangkap
kesalahan dengan yang isinya biasanya menampilkan pesan tertentu atau menuju
ke blok lain untuk mengeksekusi perintah yang diinginkan. Kata kunci Catch
menunjukkan penangkapan pengecualian.
 Finally : blok ini digunakan untuk menjalankan satu set pernyataan, apakah
eksepsi dilemparkan atau tidak. Misalnya, jika kita membuka file, itu harus
ditutup apakah eksepsi dimunculkan atau tidak, atau saat operasi dengan
database pada blok ini ditambahkan perintah untuk menutup koneksi yang telah
dibuka pada blok Try.
 Throw : Suatu program melempar pengecualian ketika masalah muncul. Hal ini
dilakukan dengan menggunakan kata kunci Throw.

Anda bisa daftar ke beberapa pernyataan untuk menangkap berbagai jenis pengecualian dalam kasus blok try,
Anda meningkatkan lebih dari satu pengecualian dalam situasi yang berbeda.

11.2.1 Kelas Exception di Net Framework.


Dalam Net Framework., exception diwakili oleh kelas. Kelas-kelas exception dalam Net Framework. Terutama
langsung atau tidak langsung berasal dari kelas System.Exception. Beberapa kelas exception berasal dari kelas
System.Exception adalah kelas System.ApplicationException dan System.SystemException.

Kelas System.ApplicationException mendukung exception yang dihasilkan oleh program aplikasi. Jadi
exception didefinisikan oleh programmer harus berasal dari kelas ini.

Kelas System.SystemException adalah kelas dasar untuk semua sistem kecuali yang telah ditetapkan.

Tabel berikut memberikan beberapa kelas pengecualian yang telah ditetapkan berasal dari kelas
Sytem.SystemException:

Tabel 11.1 Kelas Sytem.SystemException

Kelas Exception Deskripsi


System.IO.IOException Menangani error I/O
Menangani kesalahan yang
dihasilkan ketika sebuah
System.IndexOutOfRangeException metode mengacu pada
indeks array di luar
jangkauan
Menangani kesalahan yang
System.ArrayTypeMismatchExceptio dihasilkan ketika jenis
n ini tidak cocok dengan
tipe array.
Menangani kesalahan yang
System.NullReferenceException dihasilkan dari
deferencing objek null.
Menangani kesalahan yang
System.DivideByZeroException dihasilkan dari membagi
dividen dengan nol.
Menangani kesalahan yang
System.InvalidCastException dihasilkan selama
typecasting.
Menangani kesalahan yang
System.OutOfMemoryException dihasilkan dari memori
bebas tidak cukup.
Menangani kesalahan yang
System.StackOverflowException dihasilkan dari stack
overflow.
11.2.2 Penanganan Exception
VB.Net menyediakan solusi terstruktur untuk masalah penanganan exception dalam bentuk blok try dan
catch. Menggunakan blok ini laporan program inti dipisahkan dari laporan penanganan error.
Blok penanganan kesalahan ini diimplementasikan dengan menggunakan kata kunci Try, Catch dan Finally.
Berikut adalah contoh dari melemparkan exception ketika membagi dengan kondisi zero terjadi:
Module exceptionProg
Sub division(ByVal num1 As Integer, ByVal num2 As Integer)
Dim result As Integer = 0
Try
result = num1 \ num2
Catch e As DivideByZeroException
Console.WriteLine("Exception tertangkap: {0}", e)
Finally
Console.WriteLine("Hasil: {0}", result)
End Try
End Sub
Sub Main()
division(25, 5)
division(25, 0)
Console.ReadKey()
End Sub
End Module
Ketika kode di atas dikompilasi dan dijalankan, menghasilkan hasil sebagai berikut:
Exception tertangkap : System.DivideByZeroException: Attempted to divide by zero.
at ...
Hasil: 0

11.2.3 Membuat User-Defined Exception


Anda juga dapat mendefinisikan exception Anda sendiri. User-defined kelas eksepsi yang berasal dari kelas
ApplicationException. Contoh berikut menunjukkan hal ini:
Module exceptionProg
Public Class TempIsZeroException : Inherits ApplicationException
Public Sub New(ByVal message As String)
MyBase.New(message)
End Sub
End Class
Public Class Temperature
Dim temperature As Integer = 0
Sub showTemp()
If (temperature = 0) Then
Throw (New TempIsZeroException("Zero Temperature found"))
Else
Console.WriteLine("Temperature: {0}", temperature)
End If
End Sub
End Class

Sub Main()
Dim temp As Temperature = New Temperature()
Try
temp.showTemp()
Catch e As TempIsZeroException
Console.WriteLine("TempIsZeroException: {0}", e.Message)
End Try
Console.ReadKey()
End Sub
End Module

Ketika kode di atas dikompilasi dan dijalankan, menghasilkan hasil sebagai berikut:
TempIsZeroException: Zero Temperature found

11.2.4 Objek Throw


Anda dapat melemparkan sebuah benda apakah itu baik secara langsung maupun tidak langsung berasal dari
kelas System.Exception.
Anda dapat menggunakan pernyataan throw di blok catch untuk membuang objek hadir sebagai:
Throw [ expression ]

Program berikut menunjukkan hal ini:


Module exceptionProg
Sub Main()
Try
Throw New ApplicationException("A custom exception _
is being thrown here...")
Catch e As Exception
Console.WriteLine(e.Message)
Finally
Console.WriteLine("Now inside the Finally Block")
End Try
Console.ReadKey()
End Sub
End Module

Ketika kode di atas dikompilasi dan dijalankan, menghasilkan hasil sebagai berikut:
A custom exception is being thrown here...
Now inside the Finally Block

11.2.5 On Error Resume Next


Merupakan perintah penanganan kesalahan apabila terjadi kesalahan terhadap suatu baris tertentu maka baris
tersebut akan di abaikan.
Contoh :
On Error Resume Next
Dim A As Integer
X = TextBox1.Text
TextBox1.Text=”String”
MsgBox(ex.ToString)
MsgBox(“Abaikan Kesalahan”)

11.2.6 On Error Goto


Merupakan perintah penanganan kesalahan apabila terjadi kesalahan terhadap suatu baris tertentu maka
perintah akan melompat ke baris yang dituju akan dijalankan.
Contoh :
On Error Goto Pesan
Dim A As Integer
X = TextBox1.Text
TextBox1.Text=”String”
Exit Sub
Pesan :
MsgBox(“Abaikan Kesalahan”)

11.3 Contoh Soal


1) Buatlah program kalkulator sederhana untuk penanganan expsepsi dengan
desain tampilan sebagai berikut :

Selanjutnya tambahkan kontrol ke form seperti pada gambar diatas dan atur propertinya seperti
tabel berikut:
Object Properties Nilai
Form3 Name Form3
Text Operator
Label1 Text Nilai1
Label2 Text Operator
Label3 Text Nilai2
Label4 Text Hasil
TextBox1 Name TxtNilai1
ComboBox1 Name CmbOperator
TextBox2 Name TxtNilai2
TextBox3 Name TxtHasil
Button1 Name BtnProses
Text Proses

Selanjutnya ketikkan kode program sebagai berikut :


a) Double klik pada Form1, kemudian ketik kode Program berikut ini :

Public Class Form1


Private Sub Form1_Load(sender As Object, e As EventArgs) Handles
MyBase.Load
CmbOperator.Items.Add("+")
CmbOperator.Items.Add("-")
CmbOperator.Items.Add("x")
CmbOperator.Items.Add("/")
CmbOperator.Items.Add("Sisa")
CmbOperator.Items.Add("Pangkat")
CmbOperator.Items.Add("<>")
CmbOperator.Items.Add("<")
CmbOperator.Items.Add(">")
CmbOperator.Items.Add("<=")
Private Sub BtnProses_Click(sender As Object, e As EventArgs) Handles BtnProses.Click
Try
Dim x As Integer = Integer.Parse(TxtNilai1.Text)
Dim y As Integer = Integer.Parse(TxtNilai2.Text)
Select Case CmbOperator.Text
Case ("+")
TxtHasil.Text = Val(TxtNilai1.Text) + Val(TxtNilai2.Text)
Case ("-")
TxtHasil.Text = Val(TxtNilai1.Text) - Val(TxtNilai2.Text)
Case ("x")
TxtHasil.Text = Val(TxtNilai1.Text) * Val(TxtNilai2.Text)
Case ("/")
TxtHasil.Text = Val(TxtNilai1.Text) / Val(TxtNilai2.Text)
Case ("Sisa")
TxtHasil.Text = Val(TxtNilai1.Text) Mod Val(TxtNilai2.Text)
Case ("Pangkat")
TxtHasil.Text = Val(TxtNilai1.Text) ^ Val(TxtNilai2.Text)
Case ("<>")
TxtHasil.Text = Val(TxtNilai1.Text) <> Val(TxtNilai2.Text)
Case ("<")
TxtHasil.Text = Val(TxtNilai1.Text) < Val(TxtNilai2.Text)
Case (">")
TxtHasil.Text = Val(TxtNilai1.Text) > Val(TxtNilai2.Text)
Case ("<=")
TxtHasil.Text = Val(TxtNilai1.Text) <= Val(TxtNilai2.Text)
Case (">=")
TxtHasil.Text = Val(TxtNilai1.Text) >= Val(TxtNilai2.Text)
End Select
Catch ex As Exception
MsgBox("Salah menginput data / input angka")
Finally

End Try
End Sub
End Class

a) Jalankan aplikasi dengan menekan tombol F5 (di keyboard), atau melalui icon Start Debugging di
toolbar, atau melalui menu Debug > Start Debuging.

Hasil Program :
2) Buatlah program untuk penanganan expsepsi dengan desain tampilan sebagai berikut :

Selanjutnya tambahkan kontrol ke form seperti pada gambar diatas dan atur
propertinya seperti tabel berikut:
Object Properties Nilai
Form1 Name Form1
Text Form1
Groupbox Text Menu
RadioButton1 Text Asia
RadioButton2 Text America
RadioButton3 Text Eropa
ListBox1
Label1 Text Harga
Label2 Text Banyak Pesan
Label3 Text Total
Label4 Text Bayar
Label5 Text Kembali
Label6 Text No. Meja
TexBox1 Name TextBox1
TexBox2 Name TextBox2
TexBox3 Name TextBox3
Enable False
TexBox4 Name TextBox4
TexBox5 Name TextBox5
Enable False
ComboBox1
Button1 Name Button1
Text Pesan
Button2 Name Button2
Text Reject
Button3 Name Button3
Text Selesai

Kemudian ketikkan kode program sebagai berikut :


a) Klik ganda pada Form Load, kemudian ketikkan kode program berikut ini :
Imports System.Windows.Forms

Public Class Form3

Private Sub Form3_Load(ByVal sender As System.Object, ByVal e As


System.EventArgs) Handles MyBase.Load
Dim meja As Integer
For meja = 1 To 50
ComboBox1.Items.Add(meja)
Next meja
End Sub

Sub aktif()
RadioButton1.Enabled = True
RadioButton2.Enabled = True
RadioButton3.Enabled = True
ListBox1.Enabled = True
ComboBox1.Enabled = True
TextBox1.Enabled = True
TextBox2.Enabled = True
TextBox3.Enabled = False
TextBox4.Enabled = True
TextBox5.Enabled = False
Button1.Enabled = True
Button3.Enabled = True
End Sub

Sub total()
TextBox3.Text = Val(TextBox1.Text) * Val(TextBox2.Text)
End Sub

Sub kembali()
Try
Dim x As Integer = Integer.Parse(TextBox2.Text)
Dim y As Integer = Integer.Parse(TextBox4.Text)
If TextBox4.Text >= TextBox3.Text Then
TextBox5.Text = Val(TextBox4.Text) - Val(TextBox3.Text)
ElseIf TextBox4.Text < TextBox3.Text Then
MessageBox.Show("Uang Anda Kurang", "Peringatan !",
MessageBoxButtons.OK, MessageBoxIcon.Warning)
End If
Catch ex As Exception
MsgBox("Data yang anda masukkan salah", "Peringatan !")
End Try

End Sub

Sub batal()
ListBox1.Items.Clear()
ComboBox1.Text = "MejaNo"
TextBox1.Text = ""
TextBox2.Text = ""
TextBox3.Text = ""
TextBox4.Text = ""
TextBox5.Text = ""
RadioButton1.Enabled = False
RadioButton2.Enabled = False
RadioButton3.Enabled = False
ListBox1.Enabled = False
ComboBox1.Enabled = False
TextBox1.Enabled = False
TextBox2.Enabled = False
TextBox3.Enabled = False
TextBox4.Enabled = False
TextBox5.Enabled = False
Button2.Enabled = False
Button1.Enabled = False
End Sub

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As


System.EventArgs) Handles Button1.Click
Call aktif()
TextBox2.Focus()
Call total()
Call kembali()
End Sub

Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As


System.EventArgs) Handles Button3.Click
End
End Sub

Private Sub RadioButton1_CheckedChanged(ByVal sender As System.Object,


ByVal e As System.EventArgs) Handles RadioButton1.CheckedChanged
ListBox1.Items.Clear()
ListBox1.Items.Add("Shusi")
ListBox1.Items.Add("Triyaki")
ListBox1.Items.Add("Sake")
TextBox1.Text = 150000
End Sub

Private Sub RadioButton2_CheckedChanged(ByVal sender As System.Object,


ByVal e As System.EventArgs) Handles RadioButton2.CheckedChanged
ListBox1.Items.Clear()
ListBox1.Items.Add("Steak")
ListBox1.Items.Add("Fried Fish")
ListBox1.Items.Add("Coke")
TextBox1.Text = 175000
End Sub

Private Sub RadioButton3_CheckedChanged(ByVal sender As System.Object,


ByVal e As System.EventArgs) Handles RadioButton3.CheckedChanged
ListBox1.Items.Clear()
ListBox1.Items.Add("Pizza")
ListBox1.Items.Add("Spageti")
ListBox1.Items.Add("Capucinno")
TextBox1.Text = 100000
End Sub

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As


System.EventArgs) Handles Button2.Click
Call batal()
End Sub
End Class

b) Jalankan aplikasi dengan menekan tombol F5 (di keyboard), atau melalui icon Start
Debugging di toolbar, atau melalui menu Debug > Start Debuging.
Buatlah program untuk penanganan expsepsi dengan desain tampilan sebagai berikut :

Selanjutnya tambahkan kontrol ke form seperti pada gambar diatas dan atur
propertinya seperti tabel berikut:
Object Properties Nilai
Form1 Name Form1
Text Form1
Groupbox Text Menu
RadioButton1 Text Asia
RadioButton2 Text America
RadioButton3 Text Eropa
ListBox1
Label1 Text Harga
Label2 Text Banyak Pesan
Label3 Text Total
Label4 Text Bayar
Label5 Text Kembali
Label6 Text No. Meja
TexBox1 Name TextBox1
TexBox2 Name TextBox2
TexBox3 Name TextBox3
Enable False
TexBox4 Name TextBox4
TexBox5 Name TextBox5
Enable False
ComboBox1
Button1 Name Button1
Text Pesan
Button2 Name Button2
Text Reject
Button3 Name Button3
Text Selesai

Kemudian ketikkan kode program sebagai berikut :


c) Klik ganda pada Form Load, kemudian ketikkan kode program berikut ini :
Imports System.Windows.Forms

Public Class Form3

Private Sub Form3_Load(ByVal sender As System.Object, ByVal e As


System.EventArgs) Handles MyBase.Load
Dim meja As Integer
For meja = 1 To 50
ComboBox1.Items.Add(meja)
Next meja
End Sub

Sub aktif()
RadioButton1.Enabled = True
RadioButton2.Enabled = True
RadioButton3.Enabled = True
ListBox1.Enabled = True
ComboBox1.Enabled = True
TextBox1.Enabled = True
TextBox2.Enabled = True
TextBox3.Enabled = False
TextBox4.Enabled = True
TextBox5.Enabled = False
Button1.Enabled = True
Button3.Enabled = True
End Sub

Sub total()
TextBox3.Text = Val(TextBox1.Text) * Val(TextBox2.Text)
End Sub

Sub kembali()
Try
Dim x As Integer = Integer.Parse(TextBox2.Text)
Dim y As Integer = Integer.Parse(TextBox4.Text)
If TextBox4.Text >= TextBox3.Text Then
TextBox5.Text = Val(TextBox4.Text) - Val(TextBox3.Text)
ElseIf TextBox4.Text < TextBox3.Text Then
MessageBox.Show("Uang Anda Kurang", "Peringatan !",
MessageBoxButtons.OK, MessageBoxIcon.Warning)
End If
Catch ex As Exception
MsgBox("Data yang anda masukkan salah", "Peringatan !")
End Try

End Sub

Sub batal()
ListBox1.Items.Clear()
ComboBox1.Text = "MejaNo"
TextBox1.Text = ""
TextBox2.Text = ""
TextBox3.Text = ""
TextBox4.Text = ""
TextBox5.Text = ""
RadioButton1.Enabled = False
RadioButton2.Enabled = False
RadioButton3.Enabled = False
ListBox1.Enabled = False
ComboBox1.Enabled = False
TextBox1.Enabled = False
TextBox2.Enabled = False
TextBox3.Enabled = False
TextBox4.Enabled = False
TextBox5.Enabled = False
Button2.Enabled = False
Button1.Enabled = False
End Sub

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As


System.EventArgs) Handles Button1.Click
Call aktif()
TextBox2.Focus()
Call total()
Call kembali()
End Sub

Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As


System.EventArgs) Handles Button3.Click
End
End Sub

Private Sub RadioButton1_CheckedChanged(ByVal sender As System.Object,


ByVal e As System.EventArgs) Handles RadioButton1.CheckedChanged
ListBox1.Items.Clear()
ListBox1.Items.Add("Shusi")
ListBox1.Items.Add("Triyaki")
ListBox1.Items.Add("Sake")
TextBox1.Text = 150000
End Sub

Private Sub RadioButton2_CheckedChanged(ByVal sender As System.Object,


ByVal e As System.EventArgs) Handles RadioButton2.CheckedChanged
ListBox1.Items.Clear()
ListBox1.Items.Add("Steak")
ListBox1.Items.Add("Fried Fish")
ListBox1.Items.Add("Coke")
TextBox1.Text = 175000
End Sub

Private Sub RadioButton3_CheckedChanged(ByVal sender As System.Object,


ByVal e As System.EventArgs) Handles RadioButton3.CheckedChanged
ListBox1.Items.Clear()
ListBox1.Items.Add("Pizza")
ListBox1.Items.Add("Spageti")
ListBox1.Items.Add("Capucinno")
TextBox1.Text = 100000
End Sub

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As


System.EventArgs) Handles Button2.Click
Call batal()
End Sub
End Class

d) Jalankan aplikasi dengan menekan tombol F5 (di keyboard), atau melalui icon Start
Debugging di toolbar, atau melalui menu Debug > Start Debuging.
HASIL PROGRAM :
11.5 Soal Latihan
1) Buatlah desain Tampilan form seperti gambar berikut ini :

Tambahkan kontrol ke form seperti pada gambar diatas dan atur propertinya
seperti tabel berikut:
Object Properties Nilai
Form1 Name Form1
Text Converter
TexBox1 Name TxtRupiah
TexBox2 Name TxtDollar
Button1 Name BtnConver
Text Proses

Catatan : Tambahkan blok exeption pada event Convert.

Kode Program :

Public Class Form1


Private Sub BtnConver_Click(sender As Object, e As EventArgs) Handles BtnConver.Click
Try
Dim Rupiah, Dollar As Double
Rupiah = TxtRupiah.Text
Dollar = Rupiah / 14000
TxtDollar.Text = Dollar
Catch ex As Exception
MsgBox("Data yang anda masukkan salah", "Peringatan !")
End Try
End Sub
End Class

Hasil Program :

Anda mungkin juga menyukai