Que se passe-t-il quand je lance une exception?

J’ai des questions techniques. Dans cette fonction:

ssortingng report() const { if(list.begin() == list.end()){ throw "not good"; } //do something } 

Si je jette l’exception, que se passe-t-il avec le programme? Ma fonction va-t-elle se terminer ou va-t-elle continuer? Si elle se termine, quelle valeur retournera-t-elle?

Si vous lâchez une exception, toutes les fonctions seront quittées jusqu’au point où elles trouveront un bloc try...catch avec un type catch correspondant. Si votre fonction n’est pas appelée depuis un bloc try, le programme se fermera avec une exception non gérée.

Consultez https://isocpp.org/wiki/faq/exceptions pour plus d’informations.

En gros, il va monter dans la stack jusqu’à ce qu’il trouve un gestionnaire d’exceptions; s’il arrive à la fin de la stack sans en trouver un, votre programme va planter. S’il en trouve un, il rebobine la stack, lance le gestionnaire et poursuit avec le code situé après le bloc de gestionnaires, quelle que soit la hauteur de votre stack.

Vous pouvez obtenir toutes sortes d’informations sur le mécanisme de gestion des exceptions de C ++ via Google. Voici une longueur d’avance .

Puisque vous n’acceptez pas l’exception dans le contexte de la fonction, la fonction se terminera et la stack sera déroulée car elle recherche un gestionnaire d’exceptions (un bloc catch qui correspondrait à une chaîne ou à la capture générique (… )). S’il n’en trouve pas, votre programme se terminera.

Votre fonction se terminera immédiatement et ne retournera rien. Si aucune instruction catch ne détecte l’exception “remonter la chaîne d’appels”, votre application se termine.

Il ne reviendra pas, il se terminera et atteindra le bloc le plus proche (appel de stack) try...catch . Si aucun n’est trouvé, la plupart du temps le programme se ferme, sur certaines plates-formes, l’erreur peut être imprimée, mais je ne connais pas les détails de celui-ci (et probablement uniquement ceux dérivés de std :: exception).

C’est peut-être un bon sharepoint départ pour comprendre les exceptions. Gestion des exceptions en C ++