Bagikan melalui


Menangani dan melemparkan pengecualian di .NET

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