À propos des exceptions en C++ ?
给我你的怀抱
给我你的怀抱 2017-06-30 09:57:21
0
3
1127
  1. Y a-t-il une différence essentielle entre les exceptions générées par le débogage normal (comme indiqué dans l'image) et les exceptions try qui sont utilisées pour juger si la saisie de l'utilisateur est correcte ou non ? C++ inclut le premier, ou est-ce seulement le second ? Qui ?

Par quoi la première exception mentionnée ci-dessus est-elle jugée ? Par exemple, la violation d'accès dans l'image, est-elle jugée par le compilateur ou d'autres outils de l'EDI ?

给我你的怀抱
给我你的怀抱

répondre à tous(3)
phpcn_u1582

@Evian Ce que tu as dit est logique, laisse-moi faire un supplément

  • Les exceptions en C++ ne peuvent intercepter que les exceptions levées par C++. Pour faire simple, il ne peut intercepter que les exceptions générées par lui-même (non limité au code que vous écrivez, mais également à la bibliothèque d'exécution).

  • En fait, l'exception levée par C++ n'est pas une véritable exception, car elle est simplement définie et prévisible. La véritable exception n'est déclenchée par le CPU qu'après l'exécution, c'est-à-dire l'exception levée par le matériel.

  • Le matériel ne se souciera pas directement du c++, ce sera au système d'exploitation de le gérer. Compte tenu des différents systèmes d'exploitation, la gestion des exceptions est également incohérente - mais elles ne sont pas transmises au langage de niveau supérieur.

  • Prenons comme exemple la gestion relativement complète des exceptions Windows, cela

  1. Laissez-le au débogueur (le processus doit être débogué)

  2. Exécuter VEH

  3. Exécuter SEH

  4. TopLevelEH (le processus ne sera pas exécuté lorsqu'il sera débogué)

  5. Laissez-le au débogueur (la gestion des exceptions ci-dessus indiquait qu'il ne pouvait pas être géré, alors je l'ai remis à nouveau au débogueur)

  6. Notification du port d'exception d'appel csrss.exe

曾经蜡笔没有小新

Les violations de lecture de mémoire sont déterminées par le matériel puis transmises au système d'exploitation pour traitement. (Je ne connais pas grand-chose au C++, mais ce n'est pas une exception C++, mais une exception levée par Windows.)

刘奇

Je n'ai pas compris votre point de vue. Certaines bibliothèques ont des classes d'exception intégrées, et vous pouvez également personnaliser les classes d'exception. En fin de compte, elles héritent toutes de std::exception. De plus, il s'agit d'une exception d'exécution et n'a rien à voir avec le compilateur ou l'EDI.

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal