Exceptions en C ++

Exceptions en C ++
5 (100%) 1 vote





exceptions en c ++, c ++ exceptions, Programmation pour les débutants

parfois, pendant les programmes, il y a des situations qui entravent encore leur travail normal. Par exemple, en divisant le nombre de zéro, le programme fonctionnera en dépit du fait, Combien d'utilisateurs travaillant dans le programme, et des données combien est faite. Le programme se ferme tout simplement. Et imaginez, si elle est introduite avant que les données du programme utilisateur et quelques heures passées calculs. Avec une telle fermeture d'urgence du programme, toutes les données et les calculs seront perdus. accepter – pas très agréable. Il peut également répondre à cette situation, lorsqu'un programme tente d'ouvrir ne sont pas disponibles à ce fichier instant, ou demander plus, que la mémoire disponible.

Ce genre de situation, les programmeurs doivent essayer d'anticiper et d'applications de conception, de sorte qu'ils puissent répondre de manière flexible, au lieu de l'arrêt d'urgence. Dans mon livre préféré La ++ programmation en langage C. Conférences et séminaires De l'auteur. Prata, compte tenu de la définition suivante des exceptions en C ++:

exceptions en c ++, c ++ exceptions, Programmation pour les débutants

Pour vous, il ne fut pas difficile de comprendre le mécanisme des exceptions en C ++, ils considèrent l'exemple simple. Dans ce document, nous prévoyons le cas, à un certain moment au cours des calculs du programme, peut rencontrer sur la répartition des 0. Tapez le code et la compilation, dessous. Pour vous assurer que, comment le programme répond à cette situation, remplir les numéros 0 variable num2 (il agit diviseur Exemple).

Depuis la variable était est 3, cycle tandis que, en situation normale, doit travailler trois fois. À chaque étape du cycle était décrémenté via décroissance. Mais comme nous avons juste valeur 0 variable num2, le programme ne se déroule pas jusqu'à la fin de même que la première étape du cycle. Elle interrompit.

La liste suivante, nous allons corriger cette omission – ajouter quelques composants, pour aider à répondre à cette situation sans interrompre le programme. à savoir:

  • bloc Essai ou Essai-bloc (tentative, échantillon);
  • exceptions générateur – bloc jeter (traiter, course);
  • gestionnaire d'exceptions, qui interceptant -command capture (capture, capture)

Comment une exception? – Les registres de programmeur dans le code (dans Essai-bloc) condition spécifique, que, si la variable num2 sera égal à 0, alors dans ce cas, vous devez générer une exception jeter. plus, quelque chose qui a généré jeter, iNTERCEPTIONS capture-bloc (en fonction du paramètre) et le programme va exécuter le code, qui est enregistré dans ce bloc.

exemple:

comprendre en détail. lignes 21-29 unité est Essai. Il est nécessaire de placer le code, qui peut conduire à des erreurs irréversibles. Avant une expression arithmétique divisant les conditions données: si num2 Il est égal à 0, puis laissez jeter génère un certain nombre 999 (par exemple). Dans le cas, immédiatement après la génération de, D'autres commandes dans le bloc Essai ne seront plus effectués, et le grand nombre “tomber” dans le bloc capture (en tant que paramètre). Ensuite, effectuer la, comme indiqué dans le bloc capture – dans ce cas, ceci est un message d'erreur:

cout << "Numéro d'erreur" << thr << " - division par 0!!!" << endl;

et le programme va exécuter les commandes suivantes. Dans le cas, si le nombre de num2 != 0, elle ne génère rien et jeter capture-appareil ne fonctionne pas.

Regarder maintenant, comment réagir au programme, si vous tapez num2 zéro. exécuter le programme.

exceptions en c ++, c ++ exceptions, Programmation pour les débutants

Comme vous pouvez le voir, où il pourrait y avoir une erreur et l'achèvement rapide du programme, nous avons vu un message erreur №999 – division par 0!!! programme “sauté” grâce à l'opération de division sur 0 et remplies capture-bloc.

Pour vous aider à mieux comprendre, que la valeur générée jeter iNTERCEPTIONS capture-bloc, remplacer le code dans les lignes 21 – 33 cette:

Dans cet exemple,, si num2 est 0, jeter génère une chaîne, et non le nombre. rangée “chutes” dans capture-et l'unité affichée.

Regardons un exemple, quand une exception est générée fonctions, divise ce nombre par un autre:

A l'exclusion a fonctionné correctement, cette fonction doit appeler dans le bloc Essai:

capture le nombre d'interceptions 99, une division de 0 ne pourra être tenu.

principal, vous devez vous rappeler les exceptions en C ++:

  • la Essai-bloc (réessayez bloc) vous devez placer le code, ce qui pourrait potentiellement conduire à la fermeture du programme d'urgence;
  • Une exception est générée dans le bloc jeter. si jeter programme de travail démarre automatiquement l'exécution de la commande capture-bloc, en ignorant le reste du code dans Essai-bloc;
  • Le bloc de piège – capture-bloc, capture la, unité qui génère jeter. Il doit être sous Essai-bloc. Rien ne doit être écrit entre;
  • capture-appareil ne fonctionne pas, si l'exception n'a pas été générée. Le programme tout simplement ignorer.

Pour soutenir notre site – cliquez sur la tirelire. Il vous sera demandé d'envoyer un SMS. somme – votre choix.

Bulletin de nouvelles leçons sur la programmation:

4 réflexions sur "Exceptions en C ++

  1. en fait, Sujet exceptions dans toutes les langues de programmation – très glissante. Un tel mécanisme fait ses avantages, et les inconvénients et l'utilisation des dangers cachés.
    La langue du C – proizvodnыy de C, et dans ce développement inclus l'élimination. Suivant le développement (2008-2009GG) langage C – Ce langage Go. De cette exclusion ont été exclus et les développeurs avec des arguments publiés très approfondies pourquoi ils l'ont fait.
    Reyume: exceptions en C ++ doivent être utilisés, mais il, où ils ont désespérément besoin, où ils sont indispensables. Dans d'autres cas, il est préférable d'utiliser le retour traditionnel un code d'erreur.

  2. Aidez les bonnes personnes!!! Quel est le problème avec un essai I?

    1. Et vous devez jeter n'atteint pas – accident survient plus tôt, lorsqu'elle est divisée par 0.

      Et le paramètre de la prise doit être quelque chose, héritée de la classe Exception:

  3. Bonjour. Vous avez une erreur dans la troisième page.

    cout << num1 / num2 << endl; //Nous devons retirer au-delà de l'instruction if. sinon il ne fonctionne pas.

Laisser un commentaire

Placez le code dans les balises: <pre class="lang:c ++ décodage:true ">VOTRE CODE</pré>