Le eccezioni in C ++





eccezioni in C ++, C ++ eccezioni, La programmazione per i principianti

a volte, durante i programmi, ci sono situazioni che ostacolano ulteriormente il loro lavoro normale. Ad esempio, dividendo il numero zero, il programma funzionerà nonostante il fatto, Come molti utenti che lavorano nel programma, e la quantità di dati è fatta. Il programma si chiude semplicemente. e immaginate, Qualora sia sottoposta dati del programma utente e poche ore trascorse calcoli. In una tale chiusura di emergenza del programma, tutti i dati e calcoli verranno persi. concordare – non molto bello. Può anche far fronte a questa situazione, quando un programma sta tentando di aprire non è disponibile al momento questo file, o richiedere maggiori, di memoria disponibile.

Questo tipo di situazione, programmatori deve cercare di anticipare e applicazioni di progettazione, affinché possano rispondere con flessibilità, invece del arresto di emergenza. Nel mio libro preferito Il ++ linguaggio di programmazione C. Lezioni e seminari Dall'autore. Prata, data la seguente definizione di eccezioni in C ++:

eccezioni in C ++, C ++ eccezioni, La programmazione per i principianti

A voi non è stato difficile capire il meccanismo delle eccezioni in C ++, essi considerano la semplice esempio. In esso, si prevede il caso, che ad un certo punto durante i calcoli programma, in grado di soddisfare sulla divisione di 0. Tipo e compilare il codice, sotto. Per essere sicuri, come il programma risponde a questa situazione, riempire i numeri 0 variabile num2 (agisce divisore Esempio).

Dal variabile era è 3, ciclo mentre, in situazione normale, deve lavorare tre volte. Ad ogni passo del ciclo era decrementato via diminuzione. Ma come dobbiamo solo valore 0 variabile num2, il programma non avviene fino alla fine, anche la prima fase del ciclo. Ha interrotto.

Il seguente elenco, ci sarà correggere questa omissione – aggiungere un paio di componenti, per contribuire a rispondere a questa situazione, senza interrompere il programma. cioè:

  • blocco provare o provare-blocco (tentativo, campione);
  • generatore di eccezioni – blocco gettare (trattare, corsa);
  • gestore di eccezioni, che intercetta -command catturare (fermo, fermo)

Come fa un'eccezione? – I registri programmatore nel codice (in provare-blocco) condizione specifica, che se la variabile num2 sarà uguale a 0, in questo caso è necessario generare un'eccezione gettare. ulteriormente, quello generato gettare, intercetta catturare-blocco (in funzione del parametro) e il programma esegue il codice, che è registrato in questo blocco.

esempio:

comprendere in dettaglio. linee 21-29 unità è provare. È necessario inserire il codice, che può portare a errori irreversibili. Prima di un'espressione aritmetica dividendo le condizioni date: se num2 È uguale a 0, poi lasciare gettare genera un numero 999 (es). In caso, subito dopo la generazione, Ulteriori comandi nel blocco provare non sarà più eseguita, e il gran numero “cadere” in blocco catturare (come parametro). Successivamente, eseguire la, come indicato nel blocco catturare – in questo caso, questo è un messaggio di errore:

cout << "numero di errore" << THR << " - divisione per 0!!!" << endl;

e il programma eseguirà i seguenti comandi. In caso, se il numero di num2 != 0, non genera nulla e buttare catturare-unità non funziona.

Guarda ora, come reagire al programma, se si digita num2 zero. eseguire il programma.

eccezioni in C ++, C ++ eccezioni, La programmazione per i principianti

Come si può vedere, dove ci potrebbe essere un errore e il tempestivo completamento del programma, abbiamo visto un messaggio Errore №999 – divisione per 0!!! programma “balzato” attraverso l'operazione di divisione sulla 0 e soddisfatti catturare-blocco.

Per aiutare a capire meglio, come valore generato gettare intercetta catturare-blocco, sostituire il codice in linee 21 – 33 questo:

In questo esempio,, se num2 è 0, gettare genera una stringa, e non il numero. fila “cadute” in catturare-unità e visualizzati.

Diamo un'occhiata a un esempio, quando viene generato un'eccezione funzioni, divide quel numero da un altro:

Per l'esclusione funzionato correttamente, questa funzione è necessario richiamare in blocco provare:

catturare il numero di intercettazioni 99, una divisione di 0 Non si terrà.

principale, è necessario ricordare le eccezioni in C ++:

  • il provare-blocco (riprovare blocco) è necessario inserire il codice, che potrebbero portare alla chiusura del programma di emergenza;
  • Un'eccezione è generato nel blocco gettare. se gettare programma di lavoro procederà automaticamente alla esecuzione di comandi catturare-blocco, ignorando il resto del codice in provare-blocco;
  • Il blocco trappola – catturare-blocco, cattura la, che genera un blocco gettare. Deve essere sotto provare-blocco. Nulla deve essere scritto tra di loro;
  • catturare-unità non funziona, se l'eccezione non sono stati generati. Il programma semplicemente ignorare.

Per sostenere il nostro sito – cliccare sul salvadanaio. Vi verrà chiesto di inviare un SMS. somma – la vostra scelta.

Newsletter nuove lezioni sulla programmazione:

Le eccezioni in C ++
5 (100%) 1 votazione

4 pensieri su "Le eccezioni in C ++

  1. effettivamente, тема исключений в любом языке программированиядостаточно скользкая. Такой механизм вносит как свои преимущества, так и свои недостатки и скрытые опасности использования.
    Il linguaggio C ++ – производный от C, и в это развитие включили исключения. Следующее развитие (2008-2009г.г.) языка Cэто язык Go. Из него исключения были разработчиками исключены и с очень обстоятельной опубликованной аргументацией почему они это сделали.
    Реюме: исключения в C++ нужно использовать, но только там, где они крайне необходимы, где без них нельзя обойтись. В остальных случаях лучше использовать традиционный возврат кода ошибки.

  2. Помогите люди добрые!!! Что неправильно с try у меня?

    1. А у вас до throw дело не доходитаварийное завершение наступает раньше, при делении на 0.

      И параметром catch должно быть что-то, наследуемое от класса исключений:

  3. Ciao. У вас ошибка в третьем листинге.

    cout << num1 / num2 << endl; //нужно вывести за пределы оператора if. иначе не работает.

Lascia un Commento

L'indirizzo email non verrà pubblicato. i campi richiesti sono contrassegnati *