INFORMASI LEBIH LANJUT
Visual
Basic .NET atau Visual Basic 2005 mendukung dua cara untuk mencegah
galat tak terduga untuk mengakhiri aplikasi: penanganan galat
terstruktur dan penanganan galat terstruktur. Peristiwa
ini adalah galat run-time--juga disebut pengecualian--yang respons
biasa atau abnormal kondisi yang disebabkan oleh eksekusi blok kode.
Penanganan galat terstruktur adalah nama yang digunakan dalam Visual
Basic .NET atau Visual Basic 2005 merujuk ke kesalahan penanganan metode
yang digunakan di Microsoft Visual Basic 6.0. Penanganan
galat terstruktur diperkenalkan untuk yang pertama kalinya Visual Basic
programmer di .NET dan dilakukan dengan menggunakan mencoba... Menangkap... Akhirnya pernyataan yang telah lama fitur bahasa pemrograman lainnya. Penanganan
galat terstruktur memperkenalkan cara sederhana untuk membuat dan
mempertahankan program dengan kesalahan yang kuat, komprehensif
pegangan.
Meskipun Visual Basic .NET atau Visual Basic 2005 mendukung kedua
metode, metode tidak dapat diterapkan secara bersamaan pada prosedur
yang sama. Satu-satunya pengecualian ini adalah laporan galat , yang dapat digunakan dalam penanganan galat terstruktur. Disarankan bahwa semua galat penanganan Visual Basic .NET atau Visual Basic 2005 dilakukan dengan penanganan galat terstruktur. Penanganan galat terstruktur dapat menurunkan kinerja aplikasi dan menghasilkan kode yang sulit untuk debug dan memelihara.
Jika galat run-time, kedua metode penanganan galat Cari pengurus kesalahan lokal yang ditetapkan dalam blok kode tertentu. Jika tidak ada handler galat lokal ada, pengecualian disebarkan cadangan tumpukan panggilan sampai handler cocok ditemukan. Tumpukan
panggilan mewakili semua prosedur yang pernah dipanggil sebelum titik
saat ini eksekusi dan memiliki tidak lagi telah dihentikan. Jika tidak ada handler yang ditemukan di prosedur dalam tumpukan panggilan ketika terjadi kesalahan, aplikasi dihentikan.
Penanganan galat terstruktur
Penanganan galat terstruktur diimplementasikan dengan pernyataan Pada galat , yang ditempatkan di awal blok kode untuk menangani semua kemungkinan pengecualian yang terjadi selama eksekusi kode. Semua penangan galat Visual Basic 6.0 di .NET adalah objek yang dapat diakses menggunakan Microsoft.VisualBasic.Information.Err namespace. Pengendali akan ditetapkan ke tidak ada setiap kali prosedur ini disebut. Anda harus menempatkan hanya ada satu laporan Kesalahan di dalam setiap prosedur, karena pernyataan tambahan menonaktifkan semua pengendali sebelumnya yang ditetapkan dalam prosedur yang.Laporan kesalahan
Pernyataan Pada galat yang digunakan untuk mengaktifkan rutin penanganan galat, Nonaktifkan kesalahan penanganan rutin, atau menetapkan kode jika terjadi galat cabang di mana.
On Error { GoTo [ line | 0 | -1 ] | Resume Next }
Digunakan untuk mengaktifkan penanganan galat rutin, mulai dari lokasi yang ditentukan oleh argumen baris . Argumen baris dapat label baris atau nomor baris yang terletak di dalam prosedur menutup. Galat run-time mengaktifkan pengurus kesalahan dan cabang kontrol ke jalur yang ditentukan. Jika jalur yang ditentukan tidak terletak dalam prosedur yang sama sebagai pernyataan Pada galat , terjadi galat menghimpun.
Untuk menghindari perilaku tak terduga, tempatkan pernyataan Exit Sub , Fungsi keluar pernyataan atau pernyataan Keluar properti sebelum label baris atau nomor baris. Hal ini mencegah penanganan galat kode berjalan ketika ada kesalahan terjadi.
GoTo 0
Menonaktifkan pengurus kesalahan diaktifkan yang ditetapkan dalam prosedur yang saat ini dan me-reset ke tidak ada.
GoTo -1
Menonaktifkan pengecualian diaktifkan yang ditetapkan dalam prosedur yang saat ini dan me-reset ke tidak ada.
Resume Next
Memindahkan kontrol eksekusi pernyataan berikut segera setelah pernyataan yang menyebabkan galat run-time terjadi, dan terus eksekusi dari titik ini maju. Ini adalah bentuk yang disukai menggunakan untuk objek akses, alih-alih menggunakan Pada galat GoTo pernyataan.
Contoh
Dalam kode contoh berikut, pengurus kesalahan diaktifkan di baris pertama rutin dengan pernyataan Pada galat GoTo terstruktur . Lokasi penanganan rutin kesalahan mengidentifikasi Unstructured baris label. Galat rutin menerapkan sederhana Kasus pilih pernyataan yang mengeksekusi sesuai blok kode, tergantung pada galat yang terjadi.
Pernyataan Resume Next di akhir menangani prosedur galat mengembalikan kontrol eksekusi kembali ke baris yang akan diikuti baris yang menyebabkan terjadinya galat.
Penanganan galat kemudian dinonaktifkan dengan pernyataan Pada galat GoTo 0 , diikuti dengan pernyataan Di Error Resume Next , yang mengaktifkan kembali pengurus kesalahan. Jika terjadi galat run-time, pernyataan menyebabkan eksekusi cabang ke baris yang mengikutinya baris yang menyebabkan galat terjadi, dengan cara yang sama bahwa pernyataan Resume Next tidak dalam penanganan rutin kesalahan. Dalam kasus ini, baris tersebut adalah jika pernyataan yang mengevaluasi nomor galat dan menampilkan pengguna, serta menghapus objek galat.
Public Sub fnErrors()
On Error GoTo Unstructured ' Enable error handler
Dim Result As Integer
Dim Value1 As Integer = 9
Dim Value2 As Integer = 0
On Error GoTo 0 ' Disables the error handler
'Moves execution to the line following the line that caused the error.
On Error Resume Next
Result = Value1 / Value2 ' Division by zero, cause an overflow error.
' Catch the overflow error caused by dividing by zero.
If Err.Number = 6 Then
MessageBox.Show("Error Number: " & Err.Number.ToString)
Err.Clear() ' Clear Errors
End If
Exit Sub
Unstructured: ' Location of error handler
Select Case Err.Number
Case 6
' Display the error number.
MessageBox.Show("Divided by zero")
Case Else
' Catch all other type of errors.
MessageBox.Show(Err.Description)
End Select
'Resume execution to the line following the line that caused the error.
Resume Next
End Sub
Penanganan galat terstruktur
Penanganan galat terstruktur, Visual Basic sekarang memiliki cara efektif untuk mencegah galat tak terduga menghentikan eksekusi aplikasi. Penanganan galat terstruktur juga menyediakan programmer dengan cara yang lebih sederhana untuk membuat aplikasi yang kuat yang lebih mudah untuk mempertahankan.Penanganan galat terstruktur diterapkan dalam Visual Basic. NET atau Visual Basic 2005 dengan mencoba ... Menangkap... Akhirnya blok laporan. Coba ... Menangkap... Akhirnya untuk yang pertama kalinya untuk Visual Basic, blok menyediakan kemampuan penanganan galat bertumpuk.
Coba... Menangkap... Akhirnya laporan
Kode berikut ini menunjukkan struktur mencoba... Menangkap... Akhirnya pernyataan.
Try
'Encapsulates a block of code that may produce a run-time error.
Catch [Optional Filters]
'The code runs if any of the statements in the Try block fails and filter is evaluated as true.
[Additional Catch Blocks]
Finally
'Code executed after Try and Catch statement.
End Try
Pernyataan terakhir dijalankan terakhir, tanpa memperhatikan apakah ada kesalahan yang ditemukan. Dengan kata lain, jika tidak cocok menangkap pernyataan ditemukan, pernyataan terakhir mengeksekusi sebelum penyebaran pernyataan luar.
Hierarki dan penyebaran ini ditunjukkan dengan kode berikut:
Module StructuredError
Sub Main()
Try
fnStructured()
Catch ex As Exception ' Catches all exceptions.
Debug.WriteLine("Exception Information: " & vbCrLf & ex.ToString)
'Displays the representation of current exception.
Finally
Debug.WriteLine("Main: Finally executed !")
End Try
End Sub
Public Sub fnStructured()
'Nested Error Handling
Try
Try
Dim X As Integer = 9
Dim Y As Integer = 0
Dim Result As Integer
Result = X / Y
Catch e As DataException ' Catches only DataException.
'Displays the representation of current exception.
Debug.WriteLine("Exception Information: " & vbCrLf & e.Message)
Finally
Debug.WriteLine("fnStructured: Inner Finally executed !")
End Try
Catch e As InvalidCastException ' Catches only defined exception.
'Displays the representation of current exception.
Debug.WriteLine("Exception Information: " & vbCrLf & e.ToString)
Finally
Debug.WriteLine("fnStructured: Outer Finally executed !")
End Try
End Sub
End Module
Berikut adalah output prosedur sebelumnya:
fnStructured: Inner Finally executed !
fnStructured: Outer Finally executed !
Exception Information:
System.OverflowException: Arithmetic operation resulted in an overflow. at
StructuredError.StructuredError.fnStructured() in C:\Documents and
Settings\heikkiri\My Documents\Visual Studio Projects\Temp\StructuredError\StructuredError.vb:line 21 at
StructuredError.StructuredError.Main() in C:\Documents and
Settings\heikkiri\My Documents\Visual Studio
Projects\Temp\StructuredError\StructuredError.vb:line 5
Main: Finally executed !
Err objek
Err objek, yang merupakan warisan dari Microsoft Visual Basic 6.0, hanya dapat digunakan untuk menangkap kesalahan dalam prosedur yang menerapkan terstruktur galat menangani dengan pernyataan Pada galat .The Err objek berisi informasi tentang kesalahan yang terjadi selama eksekusi aplikasi. Ketika eksekusi memasuki sebuah prosedur yang berisi kesalahan penanganan, sifat-sifat Err objek yang ditetapkan ke nol (0) atau nol-panjang-string (""). Jika kesalahan terjadi selama eksekusi, properti kemudian ditetapkan untuk memberikan informasi yang unik tentang kesalahan yang terjadi, melalui sifat-sifatnya. Contoh Err objek dapat diperoleh melalui Microsoft.VisualBasic.Information.err fungsi; Namun, karena Err objek adalah objek intrinsik dengan lingkup global, hal ini tidak diperlukan untuk membuat sebuah instance objek ini pada jangka waktu.
Kasus dari galat run-time, sifat-sifat Err objek dapat digunakan untuk menangani kesalahan (tergantung pada jenis), dan juga untuk menampilkan informasi kepada pengguna tentang kesalahan yang terjadi. Tabel berikut menunjukkan sifat-sifat berbeda yang terkait dengan Err objek.
| Properti | Deskripsi |
|---|---|
| Deskripsi | Mengembalikan atau menetapkan untai yang berisi deskripsi galat yang terjadi. |
| ERL | Mengembalikan nilai bilangan bulat yang menunjukkan jumlah baris terakhir pernyataan yang dieksekusi. |
| HelpContext | Mengembalikan atau menetapkan bilangan bulat yang berisi ID konteks topik, berkas bantuan. |
| HelpFile | Mengembalikan atau menetapkan ekspresi string yang berisi lintasan lengkap berkas bantuan yang terkait dengan kesalahan. |
| LastDLLError | Mengembalikan kode galat sistem yang dihasilkan oleh panggilan ke berkas Perpustakaan tautan dinamis (DLL). |
| Nomor | Mengembalikan atau menetapkan nilai numerik yang menunjukkan kesalahan. |
| Sumber | Mengembalikan atau menetapkan untai yang menentukan nama objek atau aplikasi yang berasal dari galat. |
Objek Err memiliki dua metode yang berhubungan dengannya: meningkatkan dan jelas.
| Metode | Deskripsi |
|---|---|
| Hapus | Digunakan untuk menghapus semua properti untuk objek Err . |
| Meningkatkan | Digunakan untuk menghasilkan galat run-time, diidentifikasi dengan nomor galat yang disampaikan sebagai salah satu parameternya. |
Pengecualian kelas
System.Object
System.Exception
Apabila pengecualian dibuang, objek Err global diatur ke nilai yang sesuai, dan contoh pengecualian objek baru dibuat. Hal ini berisi informasi lebih lanjut tentang galat yang terjadi. Sebagai contoh, properti StackTrace berisi daftar metode yang disebut dan menyebabkan terjadinya galat.
Tabel berikut ini menunjukkan properti umum yang tersedia untuk pengecualian yang terperangkap dalam penanganan galat terstruktur.
| Properti | Deskripsi |
|---|---|
| HelpLink | Mengembalikan atau menetapkan link ke berkas bantuan yang terkait dengan pengecualian ini. |
| InnerException | Mengembalikan contoh pengecualian yang menyebabkan pengecualian saat ini akan terjadi. |
| Pesan | Mengembalikan pesan yang menjelaskan pengecualian. |
| Sumber | Mengembalikan atau menetapkan nama aplikasi atau objek yang menyebabkan galat. |
| StackTrace | Mengembalikan sebuah string yang menyajikan frame dalam tumpukan panggilan pada waktu saat pengecualian telah dilemparkan. |
| TargetSite | Mengembalikan metode yang membuang pengecualian. |
Tabel berikut ini menunjukkan metode umum yang diterapkan dengan pengecualian kelas.
| Metode | Deskripsi |
|---|---|
| Sama dengan (warisan dari objek) | Kelebihan beban metode yang digunakan untuk menentukan apakah dua contoh dari objek sama. |
| GetBaseException | Jika metode ini akan ditimpa di kelas, menghasilkan pengecualian yang merupakan penyebab dari satu atau lebih pengecualian berikutnya. |
| GetHashCode | Berfungsi sebagai fungsi hash untuk jenis tertentu; cocok untuk digunakan dalam menerapkan algoritma algoritma dan struktur. |
| GetObjectData | Ketika ditimpa di kelas, GetObjectData menetapkan SerializationInfo dengan informasi tentang pengecualian. |
| GetType (warisan dari objek) | Mengembalikan jenis hal saat ini. |
| ToString | Ditimpa fungsi yang membuat dan mengembalikan presentasi string pengecualian. |
Objek Err dipertahankan dalam Visual Basic .NET atau Visual Basic 2005 alasan kompatibilitas dan untuk memudahkan migrasi dari 6.0 Visual Basic untuk aplikasi Visual Basic 2005 atau Visual Basic .NET. Disarankan bahwa semua galat penanganan dalam aplikasi Visual Basic .NET atau Visual Basic 2005 dilakukan menggunakan penanganan galat/pengecualian terstruktur.
REFERENSI
- Penanganan pengecualian terstruktur
- Penanganan pengecualian terstruktur
- ERR objek
- Pengecualian kelas
Peringatan: Artikel ini telah diterjemahkan secara otomatis
Properti
ID Artikel: 311326 - Tinjauan Terakhir: 09/24/2011 18:23:00 - Revisi: 2.0
- Microsoft Visual Basic 2005
- Microsoft Visual Basic .NET 2003 Standard Edition
- Microsoft Visual Basic .NET 2002 Standard Edition
- kbvs2005swept kbvs2005applies kbinfo kbmt KB311326 KbMtid
Tidak ada komentar:
Posting Komentar