Denne artikkelen vil gi en detalj om hvordan Kast et C ++ unntak, med fokus på standardbibliotekets bibliotek og bruk av grunnleggende prøv/fange blokker.
Hvordan kaste et C ++ unntak
Før man kan begynne å lære å Kast et C ++ unntak, Det er viktig å forstå hva et unntak er. Et objekt som brukes til å betegne en feil tilstand er unntaket. C ++ brukerne bruker det når noe uventet eller utover evnene til programmet oppstår. Det er noen få forskjellige måter å definere når og hvordan et unntak skal kastes. Generelt kan du bruke når en handling finner sted som kan betraktes som en unormal situasjon. En ting å huske er at når en Unntak kastes, Det skal aldri brukes til å indikere en forsettlig handling fra brukeren.
Du kan overføre kontroll mellom deler av et program ved å bruke unntak. Prøve, Å fange, og Kaste er de tre base nøkkelordene for C ++ 's unntakshåndtering. Når et problem oppstår, vil et program Kast et unntak bruker kaste nøkkelord. En unntakshåndterer brukes av en programvare for å få et unntak på stedet der problemet skal håndteres. Begrepet å fange betegner å fange et unntak. EN prøve Block spesifiserer en del av koden som vil utløse visse unntak. En fangstblokk eller blokker blir deretter lagt til etter den.
Ved å arve fra og endre funksjonaliteten til unntaksklasse, kan du lage dine egne unntak. Eksemplet som følger viser hvordan du bygger ditt eget unntak ved å bruke std :: unntak klasse på en standard måte.
#inkludere
#inkludere
ved hjelp av navneområdet STD;
struct myxception: offentlig unntak
const char * hva () const throw ()
returnere "et C ++ unntak";
;
int main ()
prøv
Kast MyException ();
fangst (MyException & E)
std :: cout << "My exception caught" << std::endl;
std :: cout << e.what() << std::endl;
fangst (std :: unntak & e)
I eksemplet ovenfor, hva() er en offentlig metode levert av unntaksklassen i dette tilfellet, og alle unntaksklassene for barn har overstyrt den. Dette gir unntakets grunnårsak.
Produksjon
An unntak Burde være kastet Inne i en C ++ konstruktør når objektbygningen mislykkes, da det ikke er noen midler til å gjenopprette. Konstruktører må i tillegg Kast C ++ unntak For å indikere noen inngangsparametere som er utenfor området eller med verdier som ikke er tillatt. Returkoder kan ikke brukes i C ++ konstruktører fordi de mangler en returtype. Derfor anbefales det at Konstruktører kaster unntak for å indikere feil.
Til Kast et C ++ unntak og avslutt konstruktørkoden, bruk kaste uttalelse.
#inkludere
#inkludere
ved hjelp av navneområdet STD;
int addPositiveInt (int x, int y)
if (x<0 || y<0)
kast std :: ugyldig_argument ("Argumenter skal være positive");
return (x + y);
int main ()
prøve
cout << AddPositiveInt(-1, 2);
fangst (std :: ugyldig_argument & e)
Cerr << e.what() << endl;
return -1;
retur 0;
I dette C ++ kast unntakseksemplet, AddPositiveInt () Metoden brukes fra prøveblokken til hovedfunksjonen (). Et ugyldig argument unntak blir kastet av AddPositiveInt () funksjon hvis noen av de to forventede parametrene, heltall x og y, er negative. Standardbiblioteket overskriftsfilen inneholder definisjonen av STD :: Ugyldig argumentklasse. Denne klassen spesifiserer hva slags objekter som kan være kastet som unntak og logger C ++ problemer brakt av ugyldige parameterverdier. De hoved() Funksjonens fangstblokkfanger og omhandler det ugyldige argumentets unntak.
Produksjon
Når skal du kaste et C ++ unntak
Å vite når du skal Kast et unntak er det første trinnet, men hvordan implementerer du det? Standardbiblioteket inkluderer en rekke klasser under bibliotek, som ofte brukes til Kast unntak. De inneholder noe viktig informasjon for å informere brukeren om alle slags feil som oppstår, for eksempel feilmeldingen og feiltypen. Når brukerne identifiserer den aktuelle klassen, kan de deretter bruke "kaste”Nøkkelord for å kaste unntaket.
Konklusjon
Kaster et C ++ unntak er en enkel prosess som håndterer alle slags feil i programmet. Det er viktig å bruke bibliotek når du kaster unntak og bruker "prøv/fange”Blokkstruktur for å finne og håndtere dem på riktig måte. Du kan være trygg på at koden din kan håndtere feil høflig hvis du gjør dette.