Programiranje

Kako implementirati razred izjem po meri v C #

Izjema je napaka, ki se pojavi med izvajanjem in prekine običajni potek izvajanja programa, če ni pravilno obdelana. Ko pride do izjem, morda ne boste želeli uporabniku razkriti dejanske sledi skladbe ali sporočila o izjemi. Izjeme po meri lahko za izjeme dodate jasne, smiselne in uporabniku prijazne informacije, kadar pride do napak med izvajanjem programa.

Osnovni razred za vse izjeme v .Net je Izjema. Vsi razredi v hierarhiji izjem izhajajo neposredno ali posredno iz tega razreda. Upoštevajte, da System.ApplicationException in System.SystemException razredi podaljšajo System.Exception razred, ki pa izhaja iz System.Object razred. Upoštevajte, da so izjeme tako kot vse druge vrste v .Net.

ApplicationException v primerjavi s System.Exception

Če želite ustvariti razred izjem po meri, morate definirati vrsto. Pri oblikovanju izjemnih razredov po meri bi morali izpeljati svoj razred System.Exception in ne od ApplicationException. ApplicationException je bil prvotno namenjen ustvarjanju uporabniško določenih izjem, vendar uporaba tega ni več priporočljiva. Kot piše Microsoftova dokumentacija:

Izjema bi morali izvesti po meriIzjema razred, ne paApplicationException razred. Ne smete metatiApplicationException v svoji kodi in ne bi smeli ujetiApplicationException izjema, razen če nameravate znova vrniti prvotno izjemo.

Razlog ApplicationException je zastarelo, da uporaba po nepotrebnem širi hierarhijo izjem. Čeprav je ApplicationException razred podaljša Izjema razreda, ne doda nove funkcionalnosti. Njen edini namen je bil zagotoviti način za razlikovanje med izjemami, ki jih določajo aplikacije, in izjemami, ki jih definira sistem.

Oblikovanje razreda izjem po meri

Poglejmo zdaj nekaj kode. Naslednji delček kode prikazuje, kako lahko začnete ustvarjati razred izjem po meri v C # z izpeljavo System.Exception razred. Upoštevajte, da morate razredu izjem po meri navesti smiselno ime. V tem primeru bomo ustvarili razred izjem po meri z imenom LoginException, ki se lahko uporablja za zajemanje napak, do katerih lahko pride, ko se uporabnik prijavi v sistem, npr.

javni razred LoginException: System.Exception

    {

//NAREDITI

    }

Naslednji seznam kode prikazuje naš razred izjem po meri z implementiranimi privzetimi konstruktorji in konstruktorji argumentov.

javni razred LoginException: System.Exception

    {

        ///

/// Privzeti konstruktor

        ///

javni LoginException (): base ()

        {

        }

        ///

/// Argument constructor

        ///

/// To je opis izjeme

javni LoginException (niz sporočila): osnova (sporočilo)

        {

        }

        ///

/// Argument constructor z notranjo izjemo

        ///

/// To je opis izjeme

/// Notranja izjema

javni LoginException (sporočilo v nizu, izjema innerException): osnova (sporočilo, innerException)

        {

        }

        ///

/// Argument constructor s podporo za serializacijo

        ///

/// Primer SerializationInfo

/// Primer StreamingContext

zaščiten LoginException (SerializationInfo info, StreamingContext context): osnova (info, context)

        {

        }

    }

Upoštevajte uporabo parametrov v konstruktorju LoginException razreda in kako se imenujejo konstruktorji osnovnega razreda. Upoštevajte tudi, kako se zadnji konstruktor argumentov uporablja za podporo serializaciji.

Uporaba razreda izjem po meri

Naslednji seznam kod prikazuje, kako lahko uporabljate LoginException razred, ki smo ga pravkar izvedli.

statična praznina Main (string [] args)

        {

poskusite

            {

// Tukaj napišite kodo za prijavo uporabnika.

// Če so navedene poverilnice neveljavne

// vrže se objekt izjeme.

vrzi novo LoginException (“Navedene so neveljavne poverilnice ...”);

            }

catch (LoginException loginException)

            {

// Tukaj napiši kodo za obravnavo izjeme

Console.WriteLine (loginException.Message);

            }

Console.Read ();

        }

Upoštevajte, da morate razrede izjem po meri izvajati le, če želite dodati več funkcij ravnanju z izjemami v svojih aplikacijah ali kadar je uporabniku smiselno dati dodatne informacije. V večini primerov se boste želeli zanesti na standardne izjeme, ki vam jih ponuja .Net.

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