Menangani dan melemparkan pengecualian di .NET
Aplikasi Anda harus dapat menangani kesalahan yang terjadi selama eksekusi dengan konsisten. .NET menyediakan model untuk mengirimkan pemberitahuan terkait kesalahan pada aplikasi dengan cara yang seragam: operasi .NET menunjukkan kegagalan dengan melemparkan pengecualian.
Pengecualian
Pengecualian adalah kondisi kesalahan atau perilaku tak terduga yang dihadapi oleh program eksekusi. Pengecualian dapat dilemparkan karena ada kesalahan dalam kode Anda, atau dalam kode yang Anda panggil (seperti pustaka bersama), sumber daya sistem operasi yang tidak tersedia, kondisi tak terduga yang dihadapi runtime (misalnya kode yang tidak dapat diverifikasi), dan sebagainya. Aplikasi Anda dapat pulih dari beberapa kondisi ini, tetapi tidak bisa dipulihkan dari sejumlah kondisi lain. Meskipun Anda dapat melakukan pemulihan dari sebagian besar pengecualian aplikasi, Anda tidak dapat melakukan pemulihan dari sebagian besar pengecualian runtime.
Dalam .NET, pengecualian adalah objek yang mewarisi dari kelas System.Exception. Pengecualian dilemparkan dari area kode tempat masalah terjadi. Pengecualian dibiarkan bertumpuk sampai aplikasi menanganinya atau hingga program berakhir.
Metode pengendalian pengecualian vs kesalahan biasa
Secara tradisional, model pengendalian kesalahan bahasa bergantung pada cara unik bahasa dalam mendeteksi kesalahan dan menemukan pengendali yang akan menanganinya, atau pada mekanisme pengendalian kesalahan yang disediakan oleh sistem operasi. Cara .NET menerapkan pengendalian pengecualian memberikan keuntungan sebagai berikut:
Pelemparan serta pengendalian pengecualian berfungsi sama bagi bahasa pemrogram .NET.
Tampilan dan pengendaliannya tidak memerlukan sintaks bahasa tertentu guna menangani pengecualian, tetapi mengizinkan agar setiap bahasa dapat menentukan sintaksnya sendiri.
Pengecualian dapat dilemparkan melampaui batas proses dan bahkan batas mesin.
Kode pengendalian pengecualian dapat ditambahkan ke aplikasi untuk meningkatkan keandalan program.
Pengecualian menawarkan keuntungan dibandingkan metode pemberitahuan kesalahan lainnya, seperti kode yang ditampilkan. Kegagalan tidak luput dari perhatian karena jika ada pengecualian yang dilemparkan dan Anda tidak menanganinya, runtime akan mengakhiri aplikasi Anda. Nilai yang tidak valid tidak terus disebarkan melalui sistem sebagai akibat dari kode yang gagal memeriksa kode tampilan kegagalan.
Pengecualian yang umum
Tabel berikut berisi daftar beberapa pengecualian yang umum sekaligus contoh penyebabnya.
Jenis pengecualian | Deskripsi | Contoh |
---|---|---|
Exception | Kelas dasar semua pengecualian. | Tidak ada (menggunakan kelas turunan dari pengecualian ini). |
IndexOutOfRangeException | Dilemparkan oleh runtime hanya saat array diindeks dengan tidak benar. | Mengindeks array di luar rentangnya yang valid: arr[arr.Length+1] |
NullReferenceException | Dilemparkan oleh runtime hanya ketika objek null dijadikan referensi. | object o = null; o.ToString(); |
InvalidOperationException | Dilemparkan oleh metode ketika berada dalam status tidak valid. | Memanggil Enumerator.MoveNext() setelah menghapus item dari koleksi yang mendasar. |
ArgumentException | Kelas dasar semua pengecualian argumen. | Tidak ada (menggunakan kelas turunan dari pengecualian ini). |
ArgumentNullException | Dilemparkan oleh metode yang tidak mengizinkan agar argumen menjadi null. | String s = null; "Calculate".IndexOf(s); |
ArgumentOutOfRangeException | Dilemparkan oleh metode yang memverifikasi bahwa argumen berada dalam kisaran tertentu. | String s = "string"; s.Substring(s.Length+1); |
Lihat juga
- Kelas dan Properti Pengecualian
- Panduan: Cara Menggunakan Blok Try-Catch untuk Menangkap Pengecualian
- Panduan: Cara Menggunakan Pengecualian Khusus di Blok Penangkapan
- Panduan: Cara Melemparkan Pengecualian Secara Eksplisit
- Panduan: Cara Membuat Pengecualian yang Ditentukan Pengguna
- Menggunakan pengendali Pengecualian yang Difilter Pengguna
- Panduan: Menggunakan Blok Finally
- Menangani Pengecualian Interop COM
- Praktik Terbaik untuk Pengecualian
- Apa yang Perlu Diketahui Setiap Dev Mengenai Pengecualian dalam Runtime