Programavimas

Kaip įdiegti pasirinktinę išimčių klasę C #

Išimtis yra klaida, atsirandanti vykdymo metu ir nutraukianti įprastą programos vykdymo eigą, jei ji nėra tinkamai tvarkoma. Kai atsiranda išimčių, galite nenorėti atskleisti tikrojo kamino pėdsakų ar išimčių pranešimo vartotojui. Pasirinktines išimtis galima naudoti norint pridėti aiškią, prasmingą ir patogią informaciją prie išimčių, kai įvyksta klaidų, kai jūsų programa veikia.

Pagrindinė visų išimčių .Net klasė yra Išimtis. Visos išimčių hierarchijos klasės tiesiogiai ar netiesiogiai kyla iš šios klasės. Atkreipkite dėmesį, kad System.ApplicationException ir System.SystemException klasės pratęsti Sistema. Išimtis klasė, kuri savo ruožtu yra kilusi iš Sistema. Objektas klasė. Atkreipkite dėmesį, kad išimtys yra panašios į bet kokias kitas .Net rūšis.

ApplicationException vs System.Exception

Norėdami sukurti pasirinktinę išimčių klasę, turėtumėte apibrėžti tipą. Kurdami pasirinktines išimčių klases, turėtumėte išvesti savo klasę Sistema. Išimtis o ne iš ApplicationException. ApplicationException iš pradžių buvo numatyta naudoti kuriant vartotojo apibrėžtas išimtis, tačiau jų naudoti jau nerekomenduojama. Kaip teigiama „Microsoft“ dokumentuose:

Turėtumėte gauti įprastas išimtis išIšimtis klasė, o neApplicationException klasė. Jūs neturėtumėte mestiApplicationException išimtis jūsų kode ir neturėtumėte sugautiApplicationException išimtis, nebent ketinate iš naujo išmesti pradinę išimtį.

Priežastis ApplicationException buvo nebenaudojama, kad be reikalo išplėsti išimčių hierarchiją. nors ApplicationException klasė pratęsia Išimtis klasės, tai neprideda naujų funkcionalumų. Vienintelis jo tikslas buvo suteikti būdą atskirti išimtis, kurias apibrėžia programos, ir išimtis, kurias apibrėžia sistema.

Suprojektuotos išimties klasės projektavimas

Dabar įsigilinkime į tam tikrą kodą. Šis kodo fragmentas parodo, kaip galite pradėti kurti tinkintą išimčių klasę C #, išvedę Sistema. Išimtis klasė. Atminkite, kad savo išimčių klasei turėtumėte pateikti prasmingą pavadinimą. Šiame pavyzdyje sukursime pasirinktinę išimčių klasę, pavadintą LoginException, kuri gali būti naudojama klaidoms, kurios gali atsirasti vartotojui prisijungus prie sistemos, sulaikyti, pvz., jei vartotojo kredencialai yra neteisingi.

viešosios klasės „LoginException“: „System.Exception“

    {

//DARYTI

    }

Šiame kodų sąraše rodoma įprasta išimčių klasė su numatytaisiais ir argumentų konstruktoriais.

viešosios klasės „LoginException“: „System.Exception“

    {

        ///

/// Numatytasis konstruktorius

        ///

viešasis prisijungimasIšimtis (): bazė ()

        {

        }

        ///

/// Argumentų konstruktorius

        ///

/// Tai yra išimties aprašymas

public LoginException (eilutės pranešimas): bazė (žinutė)

        {

        }

        ///

/// Argumentų konstruktorius su vidine išimtimi

        ///

/// Tai yra išimties aprašymas

/// Vidinė išimtis

viešasis „LoginException“ (eilutės pranešimas, išimtis „internalException“): pagrindas (pranešimas, „internalException“)

        {

        }

        ///

/// Argumentų konstruktorius su serializavimo palaikymu

        ///

/// SerializationInfo egzempliorius

/// „StreamingContext“ egzempliorius

apsaugotas „LoginException“ („SerializationInfo“ informacija, „StreamingContext“ kontekstas): bazė (informacija, kontekstas)

        {

        }

    }

Atkreipkite dėmesį į parametrų naudojimą „LoginException“ klasė ir kaip vadinami pagrindinės klasės konstruktoriai. Taip pat atkreipkite dėmesį į tai, kaip paskutinis argumentų konstruktorius naudojamas palaikant nuoseklumą.

Naudojant pasirinktinę išimčių klasę

Šis kodų sąrašas parodo, kaip galite naudoti „LoginException“ klasę, kurią ką tik įgyvendinome.

static void Main (string [] args)

        {

bandyti

            {

// Parašykite kodą čia, kad prisijungtumėte prie vartotojo.

// Jei pateikti kredencialai yra neteisingi

// išmetamas išimties objektas.

mesti naują „LoginException“ („Pateikti neteisingi prisijungimo duomenys ...“);

            }

sugauti (LoginException loginException)

            {

// Čia įrašykite kodą, kad galėtumėte tvarkyti išimtį

Console.WriteLine (loginException.Message);

            }

Pultas.Skaitykite ();

        }

Atminkite, kad tinkintas išimčių klases turėtumėte įdiegti tik tada, kai norite pridėti daugiau funkcijų prie išimčių tvarkymo savo programose arba kai yra prasminga suteikti vartotojui papildomos informacijos. Daugeliu atvejų norėsite pasikliauti standartinėmis išimtimis.

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