Bagaimana menerapkan kelas pengecualian khusus di C #

Pengecualian adalah kesalahan yang terjadi pada waktu proses dan menghentikan aliran normal dari eksekusi program jika tidak ditangani dengan benar. Jika terjadi pengecualian, Anda mungkin tidak ingin mengungkapkan jejak tumpukan atau pesan pengecualian yang sebenarnya kepada pengguna. Pengecualian khusus dapat digunakan untuk menambahkan informasi yang jelas, bermakna, dan ramah pengguna ke pengecualian saat terjadi kesalahan saat program Anda berjalan.

Kelas dasar untuk semua pengecualian di .Net adalah Exception. Semua kelas dalam hierarki pengecualian berasal langsung atau tidak langsung dari kelas ini. Perhatikan bahwa kelas System.ApplicationExceptiondan System.SystemExceptionmemperluas System.Exceptionkelas, yang pada gilirannya diturunkan dari System.Objectkelas tersebut. Perhatikan bahwa pengecualian sama seperti jenis lainnya di .Net.

ApplicationException vs. System.Exception

Untuk membuat kelas pengecualian khusus, Anda harus menentukan tipe. Saat mendesain kelas pengecualian khusus, Anda harus mendapatkan kelas Anda dari System.Exceptiondan bukan dari ApplicationException. ApplicationExceptionpada awalnya dimaksudkan untuk digunakan untuk membuat pengecualian yang ditentukan pengguna, tetapi menggunakannya tidak lagi disarankan. Seperti yang dinyatakan dalam dokumentasi Microsoft: 

Anda harus mendapatkan pengecualian khusus dari  Exception kelas, bukan dari  ApplicationException kelas. Anda tidak boleh melempar  ApplicationException pengecualian dalam kode Anda, dan Anda tidak boleh menangkap  ApplicationException pengecualian kecuali Anda berniat untuk membuang kembali pengecualian asli.

Alasan ApplicationExceptiontidak digunakan lagi adalah karena menggunakannya secara tidak perlu memperluas hierarki pengecualian. Meskipun ApplicationExceptionkelas memperluas Exceptionkelas, itu tidak menambahkan fungsionalitas baru. Tujuan satu-satunya adalah menyediakan cara untuk membedakan antara pengecualian yang ditentukan oleh aplikasi dan pengecualian yang ditentukan oleh sistem.  

Mendesain kelas pengecualian khusus

Sekarang mari kita menggali beberapa kode. Cuplikan kode berikut menunjukkan bagaimana Anda bisa mulai membuat kelas pengecualian khusus di C # dengan menurunkan System.Exceptionkelas tersebut. Perhatikan bahwa Anda harus memberikan nama yang berarti untuk kelas pengecualian khusus Anda. Dalam contoh ini, kita akan membuat kelas pengecualian khusus bernama LoginException, yang dapat digunakan untuk menjebak kesalahan yang mungkin terjadi saat pengguna masuk ke sistem, misalnya, jika kredensial pengguna salah.

kelas publik LoginException: System.Exception

    {

       //MELAKUKAN

    }

Daftar kode berikut menunjukkan kelas pengecualian kami dengan default dan konstruktor argumen diimplementasikan.

kelas publik LoginException: System.Exception

    {

        ///

        /// Konstruktor default

        ///

        publik LoginException (): base ()

        {

        }

        ///

        /// Konstruktor argumen

        ///

        /// Ini adalah deskripsi pengecualian

        public LoginException (String message): base (message)

        {

        }

        ///

        /// Konstruktor argumen dengan pengecualian dalam

        ///

        /// Ini adalah deskripsi pengecualian

        /// Pengecualian batin

        public LoginException (String pesan, Exception innerException): base (message, innerException)

        {

        }

        ///

        /// Konstruktor argumen dengan dukungan serialisasi

        ///

        /// Contoh SerializationInfo

        /// Contoh StreamingContext

        dilindungi LoginException (info SerializationInfo, konteks StreamingContext): basis (info, konteks)

        {

        }

    }

Perhatikan penggunaan parameter dalam konstruktor LoginExceptionkelas dan bagaimana konstruktor kelas dasar dipanggil. Perhatikan juga bagaimana konstruktor argumen terakhir digunakan untuk memberikan dukungan untuk serialisasi.

Menggunakan kelas pengecualian khusus

Daftar kode berikut menunjukkan bagaimana Anda dapat menggunakan LoginExceptionkelas yang baru saja kita terapkan.

static void Main (string [] args)

        {

            mencoba

            {

                // Tulis kode di sini untuk login pengguna.

                // Jika kredensial yang diberikan tidak valid

                // objek pengecualian dilempar.

          melempar LoginException baru ("Kredensial yang diberikan tidak valid ...");

            }

            catch (LoginException loginException)

            {

                // Tulis kode di sini untuk menangani pengecualian

                Console.WriteLine (loginException.Message);

            }

            Console.Read ();

        }

Perhatikan bahwa Anda harus mengimplementasikan kelas pengecualian khusus hanya ketika Anda ingin menambahkan lebih banyak fungsionalitas ke penanganan pengecualian dalam aplikasi Anda, atau ketika masuk akal untuk memberikan informasi tambahan kepada pengguna. Dalam kebanyakan kasus, Anda akan ingin mengandalkan pengecualian standar yang diberikan .Net kepada Anda.