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