Articles of exceptions

Selon un auteur expérimenté de la communauté C ++, le code ci-dessous ne devrait pas être compilé. Est-ce qu’il a tort?

Selon Herb Sutter, le code ci-dessous ne serait pas compilé. Voir ce site http://www.gotw.ca/gotw/066.htm d’où j’ai extrait le texte suivant concernant les function-try-blocks : Vers certaines morales Incidemment, cela signifie également que la seule utilisation possible (pour la répétition uniquement) d’un constructeur function-try-block consiste à traduire une exception levée à partir d’un sous-object base ou […]

en utilisant un object après que son destructeur s’appelle

Dupliquer possible: Peut-on accéder à la mémoire d’une variable locale en dehors de sa scope? Code: #include using namespace std; class B{ public: int b; B():b(1){} ~B(){cout << "Destructor ~B() " << endl;} }; class A{ public: B ob; A()try{throw 4;} catch(…){cout << "Catched in A() handler : ob.b= " << ob.b<<endl;} }; int main()try{ […]

Comment LLVM peut-il utiliser les conteneurs standard de C ++ sans exceptions?

Selon les normes de codage LLVM , “LLVM n’utilise pas […] d’exceptions“. Cependant, LLVM utilise les conteneurs standard de C ++, tels que std::vector . Comment est-il possible pour LLVM d’utiliser les conteneurs standard sans exceptions? Comment gère-t-il une situation dans laquelle un conteneur devrait normalement être throw ? Par exemple, que se passe-t-il si […]

Catching ifstream exception dans main

J’essaie d’attraper une exception levée lorsqu’une erreur survient lors de la lecture d’un fichier dans une méthode de classe depuis main. Le code simplifié est le suivant: #include #include #include class A { public: A(const std::ssortingng filename) { std::ifstream file; file.exceptions( std::ifstream::failbit | std::ifstream::badbit); file.open(filename); } }; int main() { std::ssortingng filename(“file.txt”); try { A […]

Comment remplacer ma macro d’exception c ++ par une fonction en ligne prenant en charge __LINE__ et __FILE__?

Je lis actuellement le livre Effective C ++ de Scott Meyers. Il indique que je devrais préférer inline fonctions en inline à #define pour les macros de type fonction. Maintenant, j’essaie de coder une fonction en ligne pour remplacer ma macro d’exception. Ma vieille macro ressemble à ceci: #define __EXCEPTION(aMessage) \ { \ std::ossortingngstream stream; […]

Pourquoi le destructeur std :: exception n’est-il pas noexcept

Le destructeur de la classe de base std::exception C ++ 11 n’est pas noexcept , et peut donc (en théorie) émettre une exception, ce qui entraîne une autorisation relâchée pour toutes ses classes dérivées (y compris std::bad_alloc et std::runtime_error ). Le destructeur de std::exception C ++ 98 avait cependant une spécification d’exception throw() , indiquant […]

La durée de vie d’une exception est-elle affectée par d’autres exceptions?

Pour faire suite à ma question précédente : Si je change le code comme suit: struct ExceptionBase : virtual std::exception{}; struct SomeSpecificError : virtual ExceptionBase{}; struct SomeOtherError : virtual ExceptionBase{}; void MightThrow(); void HandleException(); void ReportError(); int main() { try { MightThrow(); } catch( … ) { HandleException(); } } void MightThrow() { throw SomeSpecificError(); […]

Situation étrange de la carte non ordonnée

J’ai une bibliothèque partagée avec la classe: // HPP: class WorldSettings { private: static std::unordered_map mIntegerStorage; static std::unordered_map mFloatStorage; static std::unordered_map mSsortingngStorage; public: template static T &Get(const std::ssortingng &key); template static T &Set(const std::ssortingng &key, T value); }; // CPP: #define DoReturn(MapName, Key, Type) { \ assert( MapName.find(Key) != MapName.end() && “No such key in […]

Exceptions capturées lancées sans try / catch

Je me souviens d’avoir lu comment des exceptions pouvaient être détectées sans l’utilisation de try / catch. Fondamentalement, lorsqu’une exception est générée, telle que “Exception non gérée” via la suppression de la définition d’un pointeur null, un processus est déclenché même lorsqu’un test try / catch n’est pas codé pour l’exception. Je crois que cela […]

Compatibilité binary des exceptions C ++

mon projet utilise 2 compilateurs C ++ différents, g ++ et nvcc (compilateur cuda). J’ai remarqué que les exceptions renvoyées par les fichiers d’object nvcc ne sont pas sockets en compte par les fichiers d’object g ++. les exceptions C ++ sont-elles supposées être compatibles binarys sur la même machine? qu’est-ce qui peut causer un […]