Come lanciare un'eccezione C ++

Come lanciare un'eccezione C ++
Lanciare un'eccezione C ++ è una tecnica importante che aiuta a migliorare la struttura generale e la stabilità del codice. Le eccezioni di C ++ sono oggetti semplici usati per indicare una condizione di errore si è verificata oltre l'ambito di ciò che può essere gestito dalla normale esecuzione.

Questo articolo fornirà un dettaglio su come farlo lancia un'eccezione C ++, con particolare attenzione alla biblioteca standard biblioteca e l'utilizzo di base prova a prendere blocchi.

Come lanciare un'eccezione C ++

Prima che si possa iniziare a imparare come farlo lancia un'eccezione C ++, È importante capire cos'è un'eccezione. Un oggetto utilizzato per indicare uno stato errato è l'eccezione. Gli utenti C ++ lo usano quando si verificano qualcosa di inaspettato o al di là delle capacità del programma. Ci sono diversi modi per definire quando e come un'eccezione dovrebbe essere lanciata. In generale, puoi usare quando si sta svolgendo un'azione che può essere considerata una situazione anormale. Una cosa da ricordare è che quando un L'eccezione viene lanciata, Non dovrebbe mai essere usato per indicare un'azione intenzionale da parte dell'utente.

È possibile trasferire il controllo tra parti di un programma utilizzando le eccezioni. Tentativo, Presa, E Gettare sono le tre parole chiave di base per Gestione delle eccezioni di C ++. Quando sorge un problema, un programma lo farà lanciare un'eccezione usando il gettare parola chiave. Un gestore di eccezioni viene utilizzato da un software per catturare un'eccezione nella posizione in cui il problema dovrebbe essere gestito. Il termine presa indica catturare un'eccezione. UN Tentativo Il blocco specifica una sezione di codice che attiverà alcune eccezioni. Un blocco di cattura o blocchi viene quindi aggiunto dopo di esso.

Ereditando e modificando la funzionalità della classe di eccezione, è possibile creare le tue eccezioni. L'esempio che segue dimostra come costruire la tua eccezione usando il std :: Eccezione classe in modo standard.

#includere
#includere
Utilizzo dello spazio dei nomi std;
Struct MyException: Eccezione pubblica
const char * What () const Throw ()
restituire "un'eccezione C ++";

;
int main ()
Tentativo
lancia myException ();
catch (myException & e)
std :: cout << "My exception caught" << std::endl;
std :: cout << e.what() << std::endl;
catch (std :: Exception & e)

Nell'esempio sopra, Che cosa() è un metodo pubblico fornito dalla classe di eccezione in questo caso e tutte le classi di eccezioni del bambino lo hanno annullato. Questo fornisce la causa principale dell'eccezione.

Produzione

UN eccezione dovrebbe essere gettato All'interno di un costruttore C ++ quando la costruzione di oggetti fallisce, in quanto non è possibile recuperare. I costruttori devono inoltre lanciare eccezioni C ++ indicare eventuali parametri di input che vanno oltre l'intervallo o con valori che non sono consentiti. I codici di ritorno non possono essere utilizzati nei costruttori C ++ perché mancano di un tipo di ritorno. Pertanto, si consiglia di I costruttori lanciano eccezioni per indicare il fallimento.

A lancia un'eccezione C ++ e terminare il codice del costruttore, utilizzare il gettare dichiarazione.

#includere
#includere
Utilizzo dello spazio dei nomi std;
Int AddPositiveInt (int x, int y)

Se (x<0 || y<0)
lancia std :: nonlid_argument ("gli argomenti dovrebbero essere positivi");
return (x + y);

int main ()

Tentativo
Cout << AddPositiveInt(-1, 2);
catch (std :: invalid_argument ed e)
Cerr << e.what() << endl;
return -1;
restituzione 0;

In questo esempio di eccezione C ++, il AddPositiveInt () Il metodo viene utilizzato dall'interno del blocco di prova della funzione principale (). Un'eccezione di argomentazione non valida viene lanciata dal AddPositiveInt () funzione Se uno dei due parametri previsti, numeri interi X E y, sono negativi. Le librerie standard Il file di intestazione contiene la definizione di std :: non valido classe di argomentazioni. Questa classe specifica il tipo di oggetti che possono essere gettato come eccezioni e registri i problemi C ++ provocati da valori di parametri non validi. IL principale() Il blocco cattura della funzione cattura e si occupa dell'eccezione dell'argomento non valido.

Produzione

Quando lanciare un'eccezione C ++

Sapere quando lanciare un'eccezione è il primo passo, ma come lo implementate? La libreria standard include una gamma di classi sotto il biblioteca, a cui sono spesso abituati lanciare eccezioni. Contengono alcune informazioni importanti per informare l'utente su qualsiasi tipo di errori che si verificano, come il messaggio di errore e il tipo di errore. Una volta che gli utenti identificano la classe appropriata, possono quindi utilizzare il "gettare"Parola chiave per lanciare l'eccezione.

Conclusione

Lanciare un'eccezione C ++ è un processo semplice che gestisce qualsiasi tipo di errore si è verificato nel programma. È importante usare il biblioteca quando si lancia eccezioni e per usare il "prova a prendere"Blocca struttura per trovarli e gestirli in modo appropriato. Puoi essere sicuro che il tuo codice possa gestire educatamente gli errori se lo fai.