EXPCEPTION HANDLING
Exceptionadalah respon terhadap keadaan yang biasa muncul ketika sebuah program sedang berjalan, seperti mencoba untuk membagi sebuah dengan nol.Exception adalah masalah yang timbul selama program berjalan.Peristiwa ini biasanya berupa kesalahan(error) dari beberapa bentuk. Ini disebabkan program kita berakhir tidak normal.
Exception menyediakan cara untuk mentransfer kontrol dari satu bagian dari program yang lain. Penanganan masalah ini di VB.net dibangun dalam empat kata kunci: Try, Catch, Finally dan Throw.
- 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.
1
2
3
4
5
6
7
8
| Try 'Kode-kode yang diharapkan dalam suatu proses disimpan disini Catch ex as Exception 'Kode-kode jika terjadi kesalahan dalam blok diatas disimpan disini. Messagebox.Show(ex.Message) Finally 'Kode-kode untuk melakukan sesuatu jika terjadi exception atau tidak. Kode-kode pada blok ini pasti dijalankan. End Try |
Mekanisme Mengantisipasi Exceptiom
Berikut adalah kemungkinan skenario exception :
1. Tidak terjadi exception
Program dijalankan, seluruh statement dalam blok try telah dieksekusi dan tidak terjadi exception sama sekali, maka blok catch tidak akan dieksekusi oleh interpreter.
2. Terjadi exception pada blok method tunggal
Blok method tunggal disini adalah bila method itu tidak memanggil statement dari method yang lain. Bila saat interpreter mengeksekusi block try ada statement yang menyebabkan excepation, maka interpreter akan langsung keluar dari blok try, kemudian mencari blok catch yang bersesuaian dengan exception yang terjadi. Jika interpreter menemukan catch yang sesuai maka interpreter akan mengeksekusi blok tersebut. Bila tidak ada catch yang sesuai, maka interpreter akan menghentikan program dan menampilkan pesan exception yang terjadi.
3. Terjadi exception pada blok method tersarang
Blok method tersarang maksudnya adalah method yang mendeklarasikan exception (misal method A) memanggil method lainya ( method B ). Method A memanggil Method B. Pada saat interpreter mengeksekusi statement dari method B ini, terjadi exception. Interpreter akan menghentikan eksekusi statement, selanjutnya mencari catch yang sesuai dalam method B. Bila catch ini tidak ditemukan ( dalam method B ), maka interpreter akan pergi ke meyhod A. Bila di temukan, maka interpreter akan mengeksekusi blok tersebut, namun bila tidak ada catch yang sesuai, interpreter akan menghentikan program dan menampilkan pesan exception.
Struktur Exception Handling
Struktur Exception Handling ataupenanganankesalahanpada visual basic 2008 antaralain :
Try … Catch … Finally … End Try
Merupakanperintahpenanganankesalahan yang berfungsiuntukmenanganikesalahandalammenjalankanaplikasi.
Bentukpenulisan :
Try
[ Perintah ]
Catch
[Tampilkankesalahan]
Finally
[ Kode program setelahperintah Try dan Catch ]
End Try
Contoh :
Try
Dim X%
X = TxtAngka.Text
Catch ex As Exception
MsgBox(ex.ToString)
MsgBox(“Input angkasaja”)
Finally
TxtAngka.Text=””
TxtAngka.Focus()
End Try
Dim X%
X = TxtAngka.Text
Catch ex As Exception
MsgBox(ex.ToString)
MsgBox(“Input angkasaja”)
Finally
TxtAngka.Text=””
TxtAngka.Focus()
End Try
Throw
Throw merupakanperintahpenanganankesalahan yang berfungsiuntukmenanganikesalahanapabilaperintah try…catch … Finally … End. Try tidakdapatmenanganisuatukesalahandarijawabanaplikasi.
Contohpenulisan :
Try
[ Perintah ]
Catch ex As Exception
[Tampilkankesalahan]
Throw ex
// mengembalikankekodepemanggil
Finally
[ Kode program setelahperintah Try dan Catch ]
Perintahinibersifat optional bias dibuat bias tidak
End Try
Contoh :
Try
Dim X%
X = TxtAngka.Text
Catch ex As Exception
MsgBox(ex.ToString)
MsgBox(“Input angkasaja”)
Throw ex
Finally
TxtAngka.Text=””
TxtAngka.Focus()
End Try
Dim X%
X = TxtAngka.Text
Catch ex As Exception
MsgBox(ex.ToString)
MsgBox(“Input angkasaja”)
Throw ex
Finally
TxtAngka.Text=””
TxtAngka.Focus()
End Try
On Error Resume Next
Merupakanperintahpenanganankesalahanapabilaterjadikesalahanterhadapsuatubaristertentumakabaristersebutakan di abaikan.
Contoh :
On Error Resume Next
Dim A As Integer
X = TextBox1.Text
TextBox1.Text=”String”
MsgBox(ex.ToString)
MsgBox(“AbaikanKesalahan”)
Dim A As Integer
X = TextBox1.Text
TextBox1.Text=”String”
MsgBox(ex.ToString)
MsgBox(“AbaikanKesalahan”)
On Error Goto
Merupakanperintahpenanganankesalahanapabilaterjadikesalahanterhadapsuatubaristertentumakaperintahakanmelompatkebaris yang ditujuakandijalankan.
Contoh :
On Error GotoPesanDim A As Integer
X = TextBox1.Text
TextBox1.Text=”String”
Exit Sub
Pesan :
MsgBox(“AbaikanKesalahan”)
*#.Exception dilemparkan selama eksekusi dari blok try dapat ditangkap dan ditangani dalam blok catch. Kode dalam blok finally selalu di-eksekusi. Berikut ini adalah aspek kunci tentang sintak dari konstruksi try-catch-finally:
· Notasi blok bersifat perintah
· Setiap blok try, terdapat satu atau lebih blok catch, tetapi hanya satu blok finally.
· Blok catch dan blok finally harus selalu muncul dalam konjungsi dengan blok try, dan diatas urutan.
· Blok try harus diikuti oleh paling sedikit satu blok catch atau satu blok finally, atau keduanya.
· Setiap blok catch mendefinisikan sebuah penanganan exception. Header dari blok catch harus membawa satu argumen, dimana exception pada blok tersebut akan ditangani. Exception harus menjadi class pelempar atau satu dari subclassesnya.
· Try-catch yang menggunakan finally maka keyword finally tersebut fungsinya hampir sama dengan keyword default pada switch-case.
Ada 3 sekenario pemrosesan dengan keyword finally yaitu :
· Bila tidak terjadi exception,maka blok finally akan di eksekusi . setelah selesai, interpreter akan mengeksekusi statement selanjutnya.
· Bila terjadi exception, interpreter akan berhenti mengeksekusi statement dalam blok try berikutnya. Kemudian, interpreter akan mencari catch yang sesuai. Bila ditemukan, interpreter akan mengeksekusi catch dan finally.
· Bila exception terjadi, namun tidak ada catch yang sesuai, maka statement – statemenet try berikutnya yang masih tersisa tidak akan di eksekusi. Selanjutnya, interpreter akan mengeksekusi blok finally.