Ohjelmointi

Mukautetun poikkeusluokan toteuttaminen C #: ssä

Poikkeuksena on virhe, joka tapahtuu ajon aikana ja lopettaa ohjelman normaalin suorituksen, jos sitä ei käsitellä oikein. Kun tapahtuu poikkeuksia, et halua paljastaa todellista pinon jäljitystä tai poikkeussanomaa käyttäjälle. Mukautettujen poikkeusten avulla voidaan lisätä selkeitä, mielekkäitä ja käyttäjäystävällisiä tietoja poikkeuksiin, kun virheitä esiintyy ohjelman ollessa käynnissä.

Kaikkien .Net-verkon poikkeusten perusluokka on Poikkeus. Kaikki poikkeushierarkian luokat ovat suoraan tai epäsuorasti peräisin tästä luokasta. Huomaa, että System.ApplicationException ja System.SystemException luokat jatkavat Järjestelmä, poikkeus luokka, joka puolestaan ​​on johdettu Järjestelmä Objekti luokassa. Huomaa, että poikkeukset ovat aivan kuten kaikki muutkin .Net-tiedostot.

ApplicationException vs. System.Exception

Voit luoda mukautetun poikkeusluokan määrittämällä tyypin. Suunnitellessasi mukautettuja poikkeusluokkia sinun tulisi johtaa luokkasi Järjestelmä, poikkeus eikä ApplicationException. ApplicationException oli alun perin tarkoitettu käytettäväksi käyttäjän määrittelemien poikkeusten luomiseen, mutta sen käyttöä ei enää suositella. Kuten Microsoftin asiakirjoissa todetaan:

Sinun tulisi johtaa mukautetut poikkeuksetPoikkeus luokan sijaanApplicationException luokassa. Sinun ei pitäisi heittääApplicationException poikkeus koodissasi, eikä sinun pitäisi saada kiinniApplicationException poikkeus, ellet aio heittää alkuperäistä poikkeusta uudelleen.

Syy ApplicationException on vanhentunut, on se, että sen käyttö turhaa poikkeus hierarkian laajentamista. vaikkakin ApplicationException luokka laajentaa Poikkeus luokassa, se ei lisää uusia toimintoja. Sen ainoa tarkoitus oli tarjota tapa erottaa sovellusten määrittelemät poikkeukset järjestelmän määrittelemistä poikkeuksista.

Mukautetun poikkeusluokan suunnittelu

Kaivetaan nyt koodiin. Seuraava koodinpätkä osoittaa, kuinka voit aloittaa mukautetun poikkeusluokan luomisen C #: ssä johtamalla Järjestelmä, poikkeus luokassa. Huomaa, että sinun tulee antaa mielekäs nimi mukautetulle poikkeusluokalle. Tässä esimerkissä luomme mukautetun poikkeusluokan nimeltä Kirjaudu sisäänPoikkeus, jota voidaan käyttää virheiden ansaitsemiseen, joita saattaa ilmetä, kun käyttäjä kirjautuu järjestelmään, esimerkiksi jos käyttäjän tunnistetiedot ovat virheelliset.

julkinen luokka LoginException: System.xxeption

    {

//TEHDÄ

    }

Seuraava koodiluettelo näyttää mukautetun poikkeusluokan, jossa oletus- ja argumenttirakentajat on toteutettu.

julkinen luokka LoginException: System.xxeption

    {

        ///

/// Oletusrakentaja

        ///

julkinen kirjautuminenException (): base ()

        {

        }

        ///

/// Argumenttirakentaja

        ///

/// Tämä on poikkeuksen kuvaus

public LoginException (merkkijono-viesti): pohja (viesti)

        {

        }

        ///

/// Argumenttirakentaja sisäistä poikkeusta lukuun ottamatta

        ///

/// Tämä on poikkeuksen kuvaus

/// Sisäinen poikkeus

public LoginException (merkkijono-viesti, Exception innerException): pohja (viesti, innerException)

        {

        }

        ///

/// Argumenttirakentaja, sarjoitustuki

        ///

/// SerializationInfo-esiintymä

/// StreamingContext-instanssi

suojattu LoginException (SerializationInfo-tiedot, StreamingContext-konteksti): pohja (tiedot, konteksti)

        {

        }

    }

Huomaa parametrien käyttö Kirjaudu sisäänPoikkeus luokka ja miten perusluokan rakentajia kutsutaan. Huomaa myös, kuinka viimeistä argumenttirakentajaa käytetään sarjoituksen tukemiseen.

Käyttämällä mukautettua poikkeusluokkaa

Seuraava koodiluettelo näyttää, kuinka voit käyttää Kirjaudu sisäänPoikkeus luokka, jonka juuri toteutimme.

staattinen void Main (merkkijono [] args)

        {

yrittää

            {

// Kirjoita koodi kirjautumalla sisään käyttäjälle.

// Jos annetut kirjautumistiedot ovat virheellisiä

// poikkeusobjekti heitetään.

heittää uusi LoginException ("Virheelliset tunnistetiedot ...");

            }

saalis (LoginException loginException)

            {

// Kirjoita koodi tähän käsittelemään poikkeusta

Console.WriteLine (loginException.Message);

            }

Konsoli.Lue ();

        }

Huomaa, että mukautettuja poikkeusluokkia tulisi ottaa käyttöön vain, kun haluat lisätä sovellusten poikkeusten käsittelyyn enemmän toimintoja tai kun on järkevää antaa käyttäjälle lisätietoja. Useimmissa tapauksissa kannattaa luottaa tavallisiin poikkeuksiin .Net antaa sinulle.