Terdapat tiga kategori kesalahan :
1. Syntax Errors, adalah kesalahan pada penulisan kode program.
2. Run-Time Errors, adalah pada waktu program berjalan. Contoh : file tidak ada data dalam database, terjadi pembagian dengan nol.
3. Logic Errors, adalah kesalahanyang berupa hasil / output yang tidak diharapkan karena kesalahan implementasi logika pada program.
Berikut adalah beberapa cara untuk menangani Run-Time Error, yaitu Error Trapping dilakukan dengan menggunakan statement on Error :
on Error Go To Errlabel
Errlabel adalah sebuah label. Cara membuat label adalah dengan membuat nama label diikuti dengan ":". Contohnya :
Sub SubExample()
'
'
On Error Go To HandleErrors
'
' [procedure code]
'
Exit Sub
HandleErrors:
'
' [Error Handling Code]
'
End Sub
Atau
On Error Go To 0, digunakan untuk menghilangkan error trapping.
Obyek Err mempunyai properti nomor (Err.Number) dan properti deskripsi (Err.Description). Untuk menggambil deskripsi dari nomor kesalahan yang terjadi dapat menggunakan fungsi Error().
Setelah terjadi kesalahan dan dilakukan error trapping, maka ada beberapa cara untuk kembali ke program :
- Resume, langkah kompilasi / eksekusi program akan kembali ke statement penyebab kesalahan.
- Resume Next, langkah kompilasi / eksekusi program akan dilanjutkan ke statement berikutnya.
- Resume Label, langkah kompilasi / eksekusi program akan menuju pada label yang ditentukan.
Untuk menampilkan kesalahan nomor berapa yang terjadi dapat digunakan method Raise. Contohnya :
Err.Raise Number
Sedangkan untuk menghilangkan kesalahan yang terjadi dapat digunakan method Clear. Contohnya :
Err.Clear