Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Aplikasi harus dapat menangani kesalahan yang terjadi selama eksekusi dengan cara yang konsisten. .NET menyediakan model untuk memberi tahu aplikasi tentang kesalahan dengan cara yang seragam: Operasi .NET menunjukkan kegagalan dengan melemparkan pengecualian.
Pengecualian
Pengecualian adalah kondisi kesalahan atau perilaku tak terduga yang ditemui oleh program eksekusi. Pengecualian dapat dilemparkan karena kesalahan dalam kode Anda atau dalam kode yang Anda panggil (seperti pustaka bersama), sumber daya sistem operasi yang tidak tersedia, kondisi tak terduga yang ditemui runtime (seperti kode yang tidak dapat diverifikasi), dan sebagainya. Aplikasi Anda dapat pulih dari beberapa kondisi ini, tetapi tidak dari yang lain. Meskipun Anda dapat memulihkan dari sebagian besar pengecualian aplikasi, Anda tidak dapat memulihkan dari sebagian besar pengecualian runtime.
Di .NET, pengecualian adalah objek yang mewarisi kelas System.Exception. Pengecualian dilemparkan dari area kode di mana masalah telah terjadi. Pengecualian dilewatkan ke tumpukan sampai aplikasi menanganinya atau program dihentikan.
Pengecualian vs. metode penanganan kesalahan tradisional
Secara tradisional, model penanganan kesalahan bahasa mengandalkan cara unik bahasa untuk mendeteksi kesalahan dan menemukan penangan untuk mereka, atau pada mekanisme penanganan kesalahan yang disediakan oleh sistem operasi. Cara .NET menerapkan penanganan pengecualian memberikan keuntungan berikut:
Pelemparan dan penanganan pengecualian berfungsi sama untuk bahasa pemrograman .NET.
Tidak memerlukan sintaks bahasa tertentu untuk menangani pengecualian, tetapi memungkinkan setiap bahasa menentukan sintaksnya sendiri.
Pengecualian dapat dilempar di seluruh proses dan bahkan batas antar mesin.
Kode penanganan pengecualian dapat ditambahkan ke aplikasi untuk meningkatkan keandalan program.
Pengecualian menawarkan keuntungan daripada metode pemberitahuan kesalahan lainnya, seperti kode pengembalian. Kegagalan tidak terlewatkan karena jika pengecualian dilemparkan dan Anda tidak menanganinya, runtime akan menghentikan aplikasi Anda. Nilai yang tidak valid tidak terus disebarluaskan melalui sistem sebagai akibat dari kode yang gagal memeriksa kode pengembalian kegagalan.
Pengecualian umum
Tabel berikut ini mencantumkan beberapa pengecualian umum dengan contoh apa yang dapat menyebabkannya.
| Jenis pengecualian | Deskripsi | Contoh |
|---|---|---|
| Exception | Kelas dasar untuk semua pengecualian. | Tidak ada (gunakan kelas turunan dari pengecualian ini). |
| IndexOutOfRangeException | Dilemparkan oleh runtime hanya ketika array diindeks secara tidak benar. | Mengindeks array di luar rentang validnya: arr[arr.Length+1] |
| NullReferenceException | Dilemparkan oleh runtime hanya ketika objek null dirujuk. | object o = null; o.ToString(); |
| InvalidOperationException | Dilemparkan oleh metode ketika dalam keadaan tidak valid. | Memanggil Enumerator.MoveNext() setelah menghapus item dari koleksi dasar. |
| ArgumentException | Kelas dasar untuk semua pengecualian argumen. | Tidak ada (gunakan kelas turunan dari pengecualian ini). |
| ArgumentNullException | Dilemparkan oleh metode yang tidak memungkinkan argumen menjadi null. | String s = null; "Calculate".IndexOf(s); |
| ArgumentOutOfRangeException | Dilemparkan oleh metode yang memverifikasi bahwa argumen berada dalam rentang tertentu. | String s = "string"; s.Substring(s.Length+1); |
Lihat juga
- Kelas dan Properti Pengecualian
- Cara: Menggunakan Blok Try-Catch untuk Menangkap Pengecualian
- Cara: Menggunakan Pengecualian Khusus di Blok Tangkap
- Cara: Secara Eksplisit Melempar Pengecualian
- Cara: Membuat Pengecualian User-Defined
- Menggunakan Penanganan Pengecualian User-Filtered
- Cara: Gunakan Blok Finally
- Menangani Pengecualian Interop COM
- Praktik Terbaik untuk Pengecualian
- Apa yang Perlu Diketahui Setiap Dev Tentang Pengecualian dalam Runtime