Programmēšana

Kā ieviest pielāgotu izņēmumu klasi C #

Izņēmums ir kļūda, kas rodas izpildlaikā un pārtrauc normālu programmas izpildes plūsmu, ja tā netiek pareizi apstrādāta. Ja rodas izņēmumi, iespējams, nevēlaties lietotājam atklāt faktisko kaudzes izsekošanas vai izņēmuma ziņojumu. Pielāgotus izņēmumus var izmantot, lai izņēmumiem pievienotu skaidru, jēgpilnu un lietotājam draudzīgu informāciju, ja programmas darbības laikā rodas kļūdas.

Bāzes klase visiem izņēmumiem domēnā .Net ir Izņēmums. Visas izņēmumu hierarhijas klases tieši vai netieši izriet no šīs klases. Ņemiet vērā, ka System.ApplicationException un System.SystemException klases pagarina Sistēma. Izņēmums klase, kas savukārt ir atvasināta no Sistēma. Objekts klasē. Ņemiet vērā, ka izņēmumi ir tāpat kā jebkura cita veida .Net.

ApplicationException vs System.Exception

Lai izveidotu pielāgotu izņēmumu klasi, jums jādefinē tips. Veidojot pielāgotu izņēmumu klases, jums vajadzētu atvasināt savu klasi Sistēma. Izņēmums nevis no ApplicationException. ApplicationException sākotnēji bija paredzēts izmantot, lai izveidotu lietotāja definētus izņēmumus, taču to vairs nav ieteicams izmantot. Kā norādīts Microsoft dokumentācijā:

Jums vajadzētu gūt pielāgotus izņēmumus noIzņēmums klases, nevisApplicationException klasē. Jums nevajadzētu mestApplicationException izņēmums jūsu kodā, un jums nevajadzētu noķertApplicationException izņēmums, ja vien jūs neplānojat mest sākotnējo izņēmumu.

Iemesls ApplicationException ir novecojis, ir tas, ka tā lietošana nevajadzīgi paplašina izņēmumu hierarhiju. Lai gan ApplicationException klase paplašina Izņēmums klasē, tas nepievieno jaunu funkcionalitāti. Tās vienīgais mērķis bija nodrošināt veidu, kā atšķirt izņēmumus, ko definē lietojumprogrammas, un izņēmumus, ko nosaka sistēma.

Pielāgotu izņēmumu klases projektēšana

Tagad iedziļināsimies kādā kodā. Šis koda fragments parāda, kā jūs varat sākt izveidot pielāgotu izņēmumu klasi C #, atvasinot Sistēma. Izņēmums klasē. Ņemiet vērā, ka pielāgotajai izņēmumu klasei ir jānorāda nozīmīgs nosaukums. Šajā piemērā mēs izveidosim pielāgotu izņēmumu klasi ar nosaukumu LoginException, ko var izmantot, lai aizturētu kļūdas, kas var rasties, kad lietotājs piesakās sistēmā, piemēram, ja lietotāja akreditācijas dati nav pareizi.

publiskā klase LoginException: System.Exception

    {

//DARĪT

    }

Šis kodu saraksts parāda mūsu pielāgoto izņēmumu klasi, kurā ir ieviesti noklusējuma un argumentu konstruktori.

publiskā klase LoginException: System.Exception

    {

        ///

/// Noklusējuma konstruktors

        ///

publiskā pieteikšanās izņēmums (): bāze ()

        {

        }

        ///

/// Argumentu konstruktors

        ///

/// Šis ir izņēmuma apraksts

publisks LoginException (virknes ziņojums): bāze (ziņojums)

        {

        }

        ///

/// Argumentu konstruktors ar iekšēju izņēmumu

        ///

/// Šis ir izņēmuma apraksts

/// Iekšējais izņēmums

publisks LoginException (virknes ziņojums, Exception internalException): bāze (message, innerException)

        {

        }

        ///

/// Argumentu konstruktors ar serializācijas atbalstu

        ///

/// SerializationInfo instance

/// StreamingContext instance

aizsargāts LoginException (SerializationInfo informācija, StreamingContext konteksts): bāze (informācija, konteksts)

        {

        }

    }

Ievērojiet parametru lietojumu LoginException klase un kā tiek saukti bāzes klases konstruktori. Ņemiet vērā arī to, kā pēdējais argumentu konstruktors tiek izmantots, lai sniegtu atbalstu serializācijai.

Izmantojot pielāgotu izņēmumu klasi

Šis kodu saraksts parāda, kā jūs varat izmantot LoginException klasē, kuru mēs tikko īstenojām.

static void Main (virkne [] args)

        {

mēģiniet

            {

// Lai pieteiktos lietotājam, uzrakstiet kodu šeit.

// Ja sniegtie akreditācijas dati nav derīgi

// tiek izmests izņēmuma objekts.

mest jaunu LoginException (“Ir sniegti nederīgi akreditācijas dati ...”);

            }

nozveja (LoginException loginException)

            {

// Šeit ierakstiet kodu, lai rīkotos ar izņēmumu

Console.WriteLine (loginException.Message);

            }

Konsole. Lasīt ();

        }

Ņemiet vērā, ka pielāgotās izņēmumu klases jums jāievieš tikai tad, ja vēlaties savās lietojumprogrammās pievienot vairāk funkcionalitātes izņēmumu apstrādei vai ja ir lietderīgi lietotājam sniegt papildu informāciju. Vairumā gadījumu jūs vēlaties paļauties uz standarta izņēmumiem. Net jums dod.

$config[zx-auto] not found$config[zx-overlay] not found