recherche

Maison  >  Questions et réponses  >  le corps du texte

À propos des exceptions en C++ ?

  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 ?

给我你的怀抱给我你的怀抱2694 Il y a quelques jours1119

répondre à tous(3)je répondrai

  • phpcn_u1582

    phpcn_u15822017-06-30 09:59:21

    @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

    répondre
    0
  • 曾经蜡笔没有小新

    曾经蜡笔没有小新2017-06-30 09:59:21

    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.)

    répondre
    0
  • 怪我咯

    怪我咯2017-06-30 09:59:21

    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.

    répondre
    0
  • Annulerrépondre